summaryrefslogtreecommitdiffstats
path: root/.vim/c-support
diff options
context:
space:
mode:
Diffstat (limited to '.vim/c-support')
-rw-r--r--.vim/c-support/codesnippets/Makefile204
-rw-r--r--.vim/c-support/codesnippets/Makefile.multi-target.template70
-rw-r--r--.vim/c-support/codesnippets/calloc_double_matrix.c36
-rw-r--r--.vim/c-support/codesnippets/calloc_int_matrix.c35
-rw-r--r--.vim/c-support/codesnippets/main.c20
-rw-r--r--.vim/c-support/codesnippets/main.cc19
-rw-r--r--.vim/c-support/codesnippets/print_array.cc.noindent29
-rw-r--r--.vim/c-support/codesnippets/print_double_array.c.noindent34
-rw-r--r--.vim/c-support/codesnippets/print_int_array.c.noindent34
-rw-r--r--.vim/c-support/doc/ChangeLog398
-rw-r--r--.vim/c-support/doc/c-hotkeys.pdfbin0 -> 40430 bytes
-rw-r--r--.vim/c-support/doc/c-hotkeys.tex366
-rw-r--r--.vim/c-support/rc/customization.ctags8
-rw-r--r--.vim/c-support/rc/customization.gvimrc57
-rw-r--r--.vim/c-support/rc/customization.indent.pro8
-rw-r--r--.vim/c-support/rc/customization.vimrc222
-rwxr-xr-x.vim/c-support/scripts/wrapper.sh30
-rw-r--r--.vim/c-support/templates/Templates30
-rw-r--r--.vim/c-support/templates/c.comments.template160
-rw-r--r--.vim/c-support/templates/c.cpp.template487
-rw-r--r--.vim/c-support/templates/c.idioms.template133
-rw-r--r--.vim/c-support/templates/c.preprocessor.template49
-rw-r--r--.vim/c-support/templates/c.statements.template69
-rw-r--r--.vim/c-support/templates/cpp.comments.template168
-rw-r--r--.vim/c-support/templates/cpp.cpp.template450
-rw-r--r--.vim/c-support/templates/cpp.idioms.template109
-rw-r--r--.vim/c-support/templates/cpp.preprocessor.template50
-rw-r--r--.vim/c-support/templates/cpp.statements.template72
-rw-r--r--.vim/c-support/wordlists/c-c++-keywords.list209
-rw-r--r--.vim/c-support/wordlists/k+r.list108
-rw-r--r--.vim/c-support/wordlists/stl_index.list202
31 files changed, 3866 insertions, 0 deletions
diff --git a/.vim/c-support/codesnippets/Makefile b/.vim/c-support/codesnippets/Makefile
new file mode 100644
index 0000000..4b02b54
--- /dev/null
+++ b/.vim/c-support/codesnippets/Makefile
@@ -0,0 +1,204 @@
+#===============================================================================
+#
+# Filename: Makefile
+# Description:
+#
+# Usage: make (generate executable )
+# make clean (remove objects, executable, prerequisits )
+# make tarball (generate compressed archive )
+# make zip (generate compressed archive )
+#
+# Version: 1.0
+# Created:
+# Revision: ---
+#
+# Author:
+# Company:
+# Email:
+#
+# Notes: This is a GNU make (gmake) makefile.
+# C extension : c
+# C++ extensions : cc cpp C
+# C and C++ sources can be mixed.
+# Prerequisites are generated automatically; makedepend is not
+# needed (see documentation for GNU make Version 3.80, July 2002,
+# section 4.13). The utility sed is used.
+#========================================== makefile template version 1.8 ======
+
+# DEBUG can be set to YES to include debugging info, or NO otherwise
+DEBUG := YES
+
+# PROFILE can be set to YES to include profiling info, or NO otherwise
+PROFILE := NO
+
+# ------------ name of the executable ----------------------------------------
+EXECUTABLE := main
+
+# ------------ list of all source files --------------------------------------
+SOURCES := main.c
+
+# ------------ compiler ------------------------------------------------------
+CC := gcc
+CXX := g++
+
+# ------------ compiler flags ------------------------------------------------
+DEBUG_CFLAGS := -Wall -ansi -pedantic -O0 -g
+RELEASE_CFLAGS := -Wall -ansi -pedantic -O3
+
+# ------------ linker flags --------------------------------------------------
+DEBUG_LDFLAGS := -g
+RELEASE_LDFLAGS :=
+
+ifeq (YES, ${DEBUG})
+ CFLAGS := ${DEBUG_CFLAGS}
+ CXXFLAGS := ${DEBUG_CXXFLAGS}
+ LDFLAGS := ${DEBUG_LDFLAGS}
+else
+ CFLAGS := ${RELEASE_CFLAGS}
+ CXXFLAGS := ${RELEASE_CXXFLAGS}
+ LDFLAGS := ${RELEASE_LDFLAGS}
+endif
+
+ifeq (YES, ${PROFILE})
+ CFLAGS := ${CFLAGS} -pg -O3
+ CXXFLAGS := ${CXXFLAGS} -pg -O3
+ LDFLAGS := ${LDFLAGS} -pg
+endif
+
+# ------------ additional system include directories -------------------------
+GLOBAL_INC_DIR =
+
+# ------------ private include directories -----------------------------------
+LOCAL_INC_DIR = $(HOME)/include
+
+# ------------ system libraries (e.g. -lm ) ---------------------------------
+SYS_LIBS = -lm
+
+# ------------ additional system library directories -------------------------
+GLOBAL_LIB_DIR =
+
+# ------------ additional system libraries -----------------------------------
+GLOBAL_LIBS =
+
+# ------------ private library directories -----------------------------------
+LOCAL_LIB_DIR = $(HOME)/lib
+
+# ------------ private libraries (e.g. libxyz.a ) ---------------------------
+LOCAL_LIBS =
+
+# ------------ archive generation ---------------------------------------------
+TARBALL_EXCLUDE = *.{o,gz,zip}
+ZIP_EXCLUDE = *.{o,gz,zip}
+
+# ------------ run executable out of this Makefile (yes/no) -----------------
+# ------------ cmd line parameters for this executable -----------------------
+EXE_START = no
+EXE_CMDLINE =
+
+#===============================================================================
+# The following statements usually need not to be changed
+#===============================================================================
+
+C_SOURCES = $(filter %.c, $(SOURCES))
+CPP_SOURCES = $(filter-out %.c, $(SOURCES))
+ALL_INC_DIR = $(addprefix -I, $(LOCAL_INC_DIR) $(GLOBAL_INC_DIR))
+ALL_LIB_DIR = $(addprefix -L, $(LOCAL_LIB_DIR) $(GLOBAL_LIB_DIR))
+GLOBAL_LIBSS = $(addprefix $(GLOBAL_LIB_DIR)/, $(GLOBAL_LIBS))
+LOCAL_LIBSS = $(addprefix $(LOCAL_LIB_DIR)/, $(LOCAL_LIBS))
+ALL_CFLAGS = $(CFLAGS) $(ALL_INC_DIR)
+ALL_LFLAGS = $(LDFLAGS) $(ALL_LIB_DIR)
+BASENAMES = $(basename $(SOURCES))
+
+# ------------ generate the names of the object files ------------------------
+OBJECTS = $(addsuffix .o,$(BASENAMES))
+
+# ------------ generate the names of the hidden prerequisite files -----------
+PREREQUISITES = $(addprefix .,$(addsuffix .d,$(BASENAMES)))
+
+# ------------ make the executable (the default goal) ------------------------
+$(EXECUTABLE): $(OBJECTS)
+ifeq ($(strip $(CPP_SOURCES)),)
+ $(CC) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
+else
+ $(CXX) $(ALL_LFLAGS) -o $(EXECUTABLE) $(OBJECTS) $(LOCAL_LIBSS) $(GLOBAL_LIBSS) $(SYS_LIBS)
+endif
+ifeq ($(EXE_START),yes)
+ ./$(EXECUTABLE) $(EXE_CMDLINE)
+endif
+
+# ------------ include the automatically generated prerequisites -------------
+# ------------ if target is not clean, tarball or zip -------------
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),tarball)
+ifneq ($(MAKECMDGOALS),zip)
+include $(PREREQUISITES)
+endif
+endif
+endif
+
+# ------------ make the objects ----------------------------------------------
+%.o: %.c
+ $(CC) -c $(ALL_CFLAGS) $<
+
+%.o: %.cc
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+%.o: %.cpp
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+%.o: %.C
+ $(CXX) -c $(ALL_CFLAGS) $<
+
+# ------------ make the prerequisites ----------------------------------------
+#
+.%.d: %.c
+ @$(make-prerequisite-c)
+
+.%.d: %.cc
+ @$(make-prerequisite-cplusplus)
+
+.%.d: %.cpp
+ @$(make-prerequisite-cplusplus)
+
+.%.d: %.C
+ @$(make-prerequisite-cplusplus)
+
+# canned command sequences
+# echoing of the sed command is suppressed by the leading @
+
+define make-prerequisite-c
+ @$(CC) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
+ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$;
+endef
+
+define make-prerequisite-cplusplus
+ @$(CXX) -MM $(ALL_CFLAGS) $< > $@.$$$$; \
+ sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' < $@.$$$$ > $@; \
+ rm -f $@.$$$$;
+endef
+
+# ------------ remove generated files ----------------------------------------
+# ------------ remove hidden backup files ------------------------------------
+clean:
+ -rm --force $(EXECUTABLE) $(OBJECTS) $(PREREQUISITES) *~
+
+# ------------ tarball generation ----------------------------------------------
+tarball:
+ @lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ rm --force $$lokaldir.tar.gz; \
+ tar --exclude=$(TARBALL_EXCLUDE) \
+ --create \
+ --gzip \
+ --verbose \
+ --file $$lokaldir.tar.gz *
+
+# ------------ zip -------------------------------------------------------------
+zip:
+ @lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ zip -r $$lokaldir.zip * -x $(ZIP_EXCLUDE)
+
+.PHONY: clean tarball zip
+
+# ==============================================================================
+# vim: set tabstop=2: set shiftwidth=2:
diff --git a/.vim/c-support/codesnippets/Makefile.multi-target.template b/.vim/c-support/codesnippets/Makefile.multi-target.template
new file mode 100644
index 0000000..75da8dd
--- /dev/null
+++ b/.vim/c-support/codesnippets/Makefile.multi-target.template
@@ -0,0 +1,70 @@
+#===============================================================================
+#
+# File: Makefile
+# Description:
+#
+# Usage: make (generate executable(s) )
+# make clean (remove objects, executables, prerequisits )
+# make tarball (generate compressed archive )
+# make zip (generate compressed archive )
+#
+# Author: Dr.-Ing. Fritz Mehner
+# Email: mehner@mfh-iserlohn.de
+# Created:
+#
+#===============================================================================
+
+
+CC = gcc
+CCP = g++
+CFLAGS = -c -g -Wall
+LFLAGS = -g
+SYS_LIBS = -lm
+TARBALL_EXCLUDE = "*.{o,gz,zip}"
+ZIP_EXCLUDE = *.o *.gz *.zip
+
+TARGETS = target_1 target_2
+
+#---------- targets --------------------------------------
+all: $(TARGETS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) $*.c
+
+%.o: %.cc
+ $(CCP) $(CFLAGS) $*.cc
+
+#---------- target 1 -------------------------------------
+# C target
+target_1: target_1.o
+ $(CC) $(LFLAGS) -o $@ $@.o $(SYS_LIBS)
+
+#---------- target 2 -------------------------------------
+# C++ target
+target_2: target_2.o
+ $(CCP) $(LFLAGS) -o $@ $@.o $(SYS_LIBS)
+
+
+#---------- target 3 -------------------------------------
+
+
+
+#---------- tarball --------------------------------------
+tarball:
+ lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ rm --force $$lokaldir.tar.gz; \
+ tar --exclude=$(TARBALL_EXCLUDE) \
+ --create \
+ --gzip \
+ --verbose \
+ --file $$lokaldir.tar.gz *
+
+#---------- zip ------------------------------------------
+zip:
+ lokaldir=`pwd`; lokaldir=$${lokaldir##*/}; \
+ zip -r $$lokaldir.zip * -x $(ZIP_EXCLUDE)
+
+#---------- clear up -------------------------------------
+clean:
+ rm --force $(EXECUTABLE) $(OBJECTS) $(PREREQUISITES)
+
diff --git a/.vim/c-support/codesnippets/calloc_double_matrix.c b/.vim/c-support/codesnippets/calloc_double_matrix.c
new file mode 100644
index 0000000..ec71658
--- /dev/null
+++ b/.vim/c-support/codesnippets/calloc_double_matrix.c
@@ -0,0 +1,36 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: calloc_double_matrix
+ * Description: Allocate a dynamic double-matrix of size rows*columns;
+ * return a pointer.
+ * =====================================================================================
+ */
+ double**
+calloc_double_matrix ( int rows, int columns )
+{
+ int i;
+ double **m;
+ m = calloc ( rows, sizeof(double*) ); /* allocate pointer array */
+ assert( m != NULL); /* abort if allocation failed */
+ *m = calloc ( rows*columns, sizeof(double) );/* allocate data array */
+ assert(*m != NULL); /* abort if allocation failed */
+ for ( i=1; i<rows; i+=1 ) /* set pointers */
+ m[i] = m[i-1] + columns;
+ return m;
+} /* ---------- end of function calloc_double_matrix ---------- */
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: free_matrix_double
+ * Description: Free a dynamic double-matrix.
+ * =====================================================================================
+ */
+ void
+free_double_matrix ( double **m )
+{
+ free(*m); /* free data array */
+ free( m); /* free pointer array */
+ return ;
+} /* ---------- end of function free_double_matrix ---------- */
+
diff --git a/.vim/c-support/codesnippets/calloc_int_matrix.c b/.vim/c-support/codesnippets/calloc_int_matrix.c
new file mode 100644
index 0000000..e21215b
--- /dev/null
+++ b/.vim/c-support/codesnippets/calloc_int_matrix.c
@@ -0,0 +1,35 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: calloc_int_matrix
+ * Description: Allocate a dynamic int-matrix of size rows*columns; return a pointer.
+ * =====================================================================================
+ */
+int**
+calloc_int_matrix ( int rows, int columns )
+{
+ int i;
+ int **m;
+ m = calloc ( rows, sizeof(int*) ); /* allocate pointer array */
+ assert( m != NULL ); /* abort if allocation failed */
+ *m = calloc ( rows*columns, sizeof(int) ); /* allocate data array */
+ assert(*m != NULL ); /* abort if allocation failed */
+ for ( i=1; i<rows; i+=1 ) /* set pointers */
+ m[i] = m[i-1] + columns;
+ return m;
+} /* ---------- end of function calloc_int_matrix ---------- */
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: free_int_matrix
+ * Description: Free a dynamic int-matrix.
+ * =====================================================================================
+ */
+void
+free_int_matrix ( int **m )
+{
+ free(*m); /* free data array */
+ free( m); /* free pointer array */
+ return ;
+} /* ---------- end of function free_int_matrix ---------- */
+
diff --git a/.vim/c-support/codesnippets/main.c b/.vim/c-support/codesnippets/main.c
new file mode 100644
index 0000000..770f5d5
--- /dev/null
+++ b/.vim/c-support/codesnippets/main.c
@@ -0,0 +1,20 @@
+#include <errno.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: main
+ * Description: main function
+ * =====================================================================================
+ */
+ int
+main ( int argc, char *argv[] )
+{
+ printf ("\nProgram %s\n\n", argv[0] );
+
+ return EXIT_SUCCESS;
+} /* ---------- end of function main ---------- */
+
diff --git a/.vim/c-support/codesnippets/main.cc b/.vim/c-support/codesnippets/main.cc
new file mode 100644
index 0000000..f3060ef
--- /dev/null
+++ b/.vim/c-support/codesnippets/main.cc
@@ -0,0 +1,19 @@
+#include <cstdlib>
+#include <fstream>
+#include <iomanip>
+#include <iostream>
+
+using namespace std;
+
+// === FUNCTION ======================================================================
+// Name: main
+// Description: main function
+// =====================================================================================
+ int
+main ( int argc, char *argv[] )
+{
+ cout << "\nProgram " << argv[0] << endl << endl;
+
+ return EXIT_SUCCESS;
+} // ---------- end of function main ----------
+
diff --git a/.vim/c-support/codesnippets/print_array.cc.noindent b/.vim/c-support/codesnippets/print_array.cc.noindent
new file mode 100644
index 0000000..52c43d3
--- /dev/null
+++ b/.vim/c-support/codesnippets/print_array.cc.noindent
@@ -0,0 +1,29 @@
+
+// === FUNCTION ======================================================================
+// Name: print_array
+// Description: Print an array with one dimension.
+// Use
+// print_array<T,w>( *matrix, n1*n2, n2, "matrix" );
+// for
+// T matrix[n1][n2];
+// =====================================================================================
+ template <class T, int width>
+void print_array ( T *array, // array to print
+ int n, // number of elements to print
+ int nrow, // number of elements per row
+ string arrayname // array name
+ )
+{
+ string line(" index | content\n ------+-");
+
+ cout << "\n\n array \"" << arrayname << "\", length " << n << endl << endl;
+ cout << line.append(width*nrow, '-');
+ for ( int i=0; i<n; i+=1 ) {
+ if( i%nrow == 0 )
+ cout << endl << setw(6) << i << " | ";
+ cout << "" << setw(width) << fixed << setprecision(2) << array[i];
+ }
+ cout << endl << endl;
+ return ;
+} // ---------- end of function print_double_array ----------
+
diff --git a/.vim/c-support/codesnippets/print_double_array.c.noindent b/.vim/c-support/codesnippets/print_double_array.c.noindent
new file mode 100644
index 0000000..c6bea02
--- /dev/null
+++ b/.vim/c-support/codesnippets/print_double_array.c.noindent
@@ -0,0 +1,34 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: print_double_array
+ * Description: Print a double-array with one dimension.
+ * Use
+ * print_int_array( *matrix, n1*n2, n2, "matrix" );
+ * for
+ * double matrix[n1][n2];
+ * =====================================================================================
+ */
+static void
+print_double_array ( double array[], /* array to print */
+ int n, /* number of elements to print */
+ int nrow, /* number of elements per row */
+ char *arrayname /* array name */
+ )
+{
+ int i;
+ printf ("\n\n array \"%s\", length %d\n", arrayname, n );
+ printf ("\n index | content\n" );
+ printf ( " ------+-" );
+ for ( i = 0; i < nrow; i += 1 )
+ printf ( "---------" );
+ for ( i=0; i<n; i+=1 )
+ {
+ if( i%nrow == 0 )
+ printf ("\n%6d | ", i );
+ printf (" %8.2f", array[i] );
+ }
+ printf ("\n\n");
+ return ;
+} /* ---------- end of function print_double_array ---------- */
+
diff --git a/.vim/c-support/codesnippets/print_int_array.c.noindent b/.vim/c-support/codesnippets/print_int_array.c.noindent
new file mode 100644
index 0000000..fc32043
--- /dev/null
+++ b/.vim/c-support/codesnippets/print_int_array.c.noindent
@@ -0,0 +1,34 @@
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: print_int_array
+ * Description: Print an int-array with one dimension.
+ * Use
+ * print_int_array( *matrix, n1*n2, n2, "matrix" );
+ * for
+ * int matrix[n1][n2];
+ * =====================================================================================
+ */
+static void
+print_int_array ( int array[], /* array to print */
+ int n, /* number of elements to print */
+ int nrow, /* number of elements per row */
+ char *arrayname /* array name */
+ )
+{
+ int i;
+ printf ("\n\n array \"%s\", length %d\n", arrayname, n );
+ printf ("\n index | content\n" );
+ printf ( " ------+-" );
+ for ( i = 0; i < nrow; i += 1 )
+ printf ( "-------" );
+ for ( i=0; i<n; i+=1 )
+ {
+ if( i%nrow == 0 )
+ printf ("\n%6d | ", i );
+ printf (" %6d", array[i] );
+ }
+ printf ("\n\n");
+ return ;
+} /* ---------- end of function print_int_array ---------- */
+
diff --git a/.vim/c-support/doc/ChangeLog b/.vim/c-support/doc/ChangeLog
new file mode 100644
index 0000000..25176da
--- /dev/null
+++ b/.vim/c-support/doc/ChangeLog
@@ -0,0 +1,398 @@
+================================================================================
+ RELEASE NOTES FOR VERSION 5.9
+================================================================================
++ Two additional hotkeys (+ ex commands) for preprocessor statements.
++ Compile-link-run: improved error detection.
++ Menu Run: hardcopy can print any buffer.
++ Several minor improvements and bugfixes.
+
+================================================================================
+ RELEASE NOTES FOR VERSION 5.8
+================================================================================
++ Hotkeys are shown in the menus.
++ File browser for code snippets and templates choosable (2 global variables).
++ Two new hotkeys: include file description (implementation, header).
++ New menu item: namespace alias
++ Bugfix: wrapper script for use of a xterm could not handle parameters containing blanks.
++ Several minor improvements.
+
+================================================================================
+ RELEASE NOTES FOR VERSION 5.7
+================================================================================
++ 4 new hotkeys : insert file section comments (C/C++/H), special comments,
+ keyword comments.
++ Adjusting end-of-line comment adjustment improved.
+
+================================================================================
+ RELEASE NOTES FOR VERSION 5.6
+================================================================================
++ Jump targets (templates) and mapping Ctrl-j can be switched off.
++ Yet unused jump targets will be highlighted after a file is opened.
++ Statements menu: else block (key mapping \se).
++ Handling of <SPLIT> improved (templates).
++ Minor improvements.
+
+================================================================================
+ RELEASE NOTES FOR VERSION 5.5
+================================================================================
++ Additional plugin-tags (jump targets in templates): <+text+>, <-text->.
++ Additional mapping Ctrl-j : jump to these new targets.
++ Template-file: additional macro |STYLE| and IF-ENDIF-construct to easily
+ choose between sets of templates.
++ Additional mapping: auto-complete classical C comment (also multi-line).
++ Additional mapping: auto-complete open block starting with {<CR> .
++ Visual mode for date and time insertion (menu 'Comments').
++ Visual mode for tags (submenu 'Comments->tags (plugin)').
++ Bugfix: hotkey \ica not working
++ Bugfix: hotkey Shift-F2 for the alternate-plugin disappeared.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.4
+=======================================================================================
++ New hotkey \+co inserts ' cout << << endl;'
++ New menu item C++-menu: 'cout' replaces 'cout variable' and 'cout string'.
++ Hotkey \c/ removed ( \cc does the same).
++ Bugfix: after an unsuccessful compilation screen sometimes garbled.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.3
+=======================================================================================
++ Insertions work properly when folding is used.
++ Menu items Idioms->for(...) : type declaration for loop variable possible (tab completion).
++ Specification of command line arguments (Run->cmd. line arg.): filename completion active.
++ New main menu item 'show manual' (hotkey \hm): read manual for word under cursor.
++ One hotkey renamed: \h -> \hp (help plugin)
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.2.1
+=======================================================================================
++ Bugfix: stray characters whith three dialogs
++ Bugfix: Missing parameter in 2 internal function calls
++ Menu items 'Snippets->edit local/global templates' start an file browser (convenience).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.2
+=======================================================================================
++ Superfluous control characters for mode switching (menus, hotkeys) removed. Caused beeps.
++ Template files (local/global) can be opened from the snippet menu.
++ Three new preprocessor statements.
++ v-mode for RTTI-entries.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.1
+=======================================================================================
++ Definition and implementation of classes have now different templates and menu entries.
++ Accessor methods (get/set) can be generated.
++ New templates: everything other than language keywords comes from a template
+ (and is user changeable).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.5
+=======================================================================================
++ Bugfix: on a few systems doubling of path components in the run command (F9).
+ Skip this upgrade if you do not have this problem.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.4
+=======================================================================================
++ Format for the macros |DATE|, |TIME|, and |YEAR| can be defined by the user.
++ Help text improved.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.3
+=======================================================================================
++ Code snippets can now be used in the console mode (Vim without GUI).
++ Bugfix: Possible conflict with 'indent' removed when inserting templates.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.2
+=======================================================================================
++ Bugfix: Prototype picker did not alway delete no longer used prototypes.
++ Bugfix: Prototype picker removed template specializations from parameter lists.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0.1
+=======================================================================================
++ Bugfix: autocmd setting can influence autocmd settings of OTHER plugins.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 5.0
+=======================================================================================
++ Completely new template system. Now every menu item is user definable.
++ Changes to allow a system-wide installation.
++ A few hotkeys added and renamed.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.6.1
+=======================================================================================
++ New global variable to control the filetype of *.h header files (default is now 'cpp').
++ Bugfix: properly resetting 'compiler' after using make, splint, and CodeCheck.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.6
+=======================================================================================
++ New insert mode mappings (comments, statements, preprocessing, idioms, C++).
++ Some mappings renamed (easier to remember).
++ New tag (basename of a file reduced to characters allowed in names).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.5
+=======================================================================================
++ New menu item and hotkey for the (re)alignement of end-of-line comments.
++ Hotkey \cn removed. Only one menu item for end-of-line comments left.
++ Changed hotkeys: \ce -> \cl and \cl -> \cs .
++ Three new tags (giving the basename of a file) for writing template files.
++ Prototype picker handles template methods.
++ Bugfix: splint works now under Windows.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.4
+=======================================================================================
++ Plugin directories rearranged.
++ main- and for-idiom have a visual mode now.
++ Four new commands (command line) to control the comment style.
++ Comment style (C/C++) can automatically follow the filetype.
++ Bugfix: empty new file after removing the header template can't be closed.
++ Bugfix : Tools entry missing when root menu not shown from the start.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.3
+=======================================================================================
++ CodeCheck (TM) integrated (source code analysing tool).
++ New key mappings for preprocessor statements.
++ New preprocessor menu.
++ Bugfix: indent under Windows.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.2.1
+=======================================================================================
++ Bugfix: change needed for some menu names after patch 7.0.054 .
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.2
+=======================================================================================
++ Setting the starting column for trailing comments improved.
++ Small bug in block uncommenting fixed.
++ Mac OS X : circumvent a Vim bug which caused a crash when loading plugin version 4.1.
++ File syntax/c.vim removed (but see help in csupport.txt).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.1
+=======================================================================================
++ A complete switch statement can be made from a list of labels.
++ Additional cases can be made from a list of labels.
++ Small bug in line end commenting fixed.
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 4.0
+=======================================================================================
+
++ Kernighan & Ritchie style for block statements can be enabled.
++ Changes to make it compatible with Vim 7.
++ Set C/C++ file type for source files which should not be preprocessed (*.i, *.ii).
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.11
+=======================================================================================
+
++ Hotkeys and an accompanying reference card added.
++ Preparation for syntax based folding.
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.10
+=======================================================================================
+
++ Remove "#if 0 ... #endif" from the inside.
++ Change C comments to C++ comments and vice versa.
++ try..catch / catch / catch(...) now can be set surround a marked area.
++ Prototype picking improved (for C++).
++ A hardcopy shows the localized date and time in the header line.
++ New help menu entry in the main menu of this plugin (shows the plugin documentation).
++ Switch between corresponding source and header files with <S-F2> if the plugin a.vim
+ is present.
++ Plugin can be used with autocompletion for (, [, and { .
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.9.1
+=======================================================================================
+
++ Doubling of file header for new c- and h-files under Windows fixed (Thanks to
+ Fabricio C A Oliveira).
++ Tiny bug in the file open idioms fixed.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.9
+=======================================================================================
+
++ Formatter 'indent' integrated.
++ Bugfix in the automatic header insertion.
++ Assert idiom added.
++ #if 0 ... #endif statement for blocking out code added.
++ Minor stylistic improvements in some idioms.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.8.2
+=======================================================================================
+
++ Screen update problem solved: color inversion under FC4 (Thanks to Bernie Barton).
++ RTTI menu : additional v-mode.
++ Statement menu and C++ menu rearranged.
++ Include guard : name generation improved.
++ File header templates will be included for additional file extensions (cp, cxx, c++, ...).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.8.1
+=======================================================================================
+
++ More C++ output manipulators, manipulator insertion more intuitive.
++ Output into buffer: cursor goes to top of file.
++ Makefile template improved (code snippet).
++ Some internal improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.8
+=======================================================================================
+
++ Windows support. Most features are now available under Windows.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.7.2
+=======================================================================================
+
++ Run buffer through splint (A tool for statically checking C programs; see
+ http://www.splint.org). An error window will be opened; quickfix commands can be used.
++ Set buffer related command line arguments for splint.
++ Line end comments start in a fixed column (can be set from the menu).
++ Spaces in path names and file names are now possible.
++ Template files and snippet files are no longer kept in the list of alternate files.
++ Some minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.7.1
+=======================================================================================
+
++ Bug fixed (command line arguments not passed to the executable).
++ File extension for executables can be set.
++ Minor improvements.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.7
+=======================================================================================
+
++ Running a program:
+ (1) Run program from the gVim command line.
+ (2) Run program and direct the output into a window with name "C-Output".
+ This buffer and its content will disappear when closing the window.
+ The buffer is reused when still open.
+ (3) Run program in an xterm (adjustable).
++ Command line arguments are now buffer related (each buffer can have its own arguments).
++ Code snippets can be protected from being indented during insertion.
++ Picked up prototypes will be deleted after insertion.
++ A code snippet with the file name extension "ni" or "noindent" will not be
+ indented on insertion.
++ for- and calloc-/malloc-idioms improved.
++ Bug fixed (word list handling).
+
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.6
+=======================================================================================
+
++ Installation simplified.
++ for-loop-idiom asks for control variable, initial value, ...
++ malloc-idiom asks for pointer variable and size.
++ Toggling the comment style works correct again.
++ Empty error windows will be closed.
++ Prototype picker removes trailing parts of the function body if marked.
++ The dialog windows (GUI) have been replaced by more flexible command line inputs.
++ The undocumented and unnecessary hot key F12 has been removed.
++ Extension to ctags + taglist shows makefile targets and qmake targets.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.5
+=======================================================================================
+
++ Aligned line end comments for consecutive lines.
++ Improved prototype picker removes comments.
++ Picked up prototypes can be shown.
++ Uncomment more than one block at once.
++ 3 new idioms.
++ Help file improved .
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.4
+=======================================================================================
+
++ Two new global variables: C_Dictionary_File, C_MenuHeader .
++ The preprocessor statements #if... and the function idiom include marked
+ lines when invoked in visual mode.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.3
+=======================================================================================
+
++ The C/C++ root menu can be disabled.
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.2
+=======================================================================================
+
++ Only one C/C++ entry in the gVim root menu.
++ All hotkeys are only defined for C/C++ files (file type plugin added).
++ The following constructs are now read as templates from files:
+ class, class using new,
+ template class, template class using new,
+ error class
++ Install script added.
++ Customization improved.
++ Documentation improved (help file added).
++ Bug fix (template file handling)
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.1
+=======================================================================================
+
++ When the comment style "C" is active the menu entry "Comments.code->comment"
+ turns a marked region in one multiline C-comment.
++ The menu entry "Comments.comment->code" turns marked multiline C-comment
+ back into code.
++ A marked region can be surrounded by a for-, if, if-else, while-, do-while-statement
+ (with indentation).
++ The menu entry "Snippets.make prototype" makes a C- or C++-prototype from
+ the current line or marked region and puts it in an internal buffer.
++ The menu entry "Snippets.add prototype" also makes a C- or C++-prototype from
+ the current line or a marked region and adds it to the internal buffer.
++ The menu entry "Snippets.put prototype" inserts all gathered prototypes
+ below the current line.
++ Tag substitution rewritten (Some characters in a substitution text for a tag
+ prevented the tag from being substituted).
+
+=======================================================================================
+ RELEASE NOTES FOR VERSION 3.0
+=======================================================================================
+
++ C-style comments AND C++-style comments are supported now.
++ The menu entry 'Comments->Comment style ..' switches the styles (toggle).
++ Block comments are now read as templates or skeletons from files:
+ Frame Block, Function Description, Method Description,
+ Class Description, H+file header, C/C++-file header
++ These templates can contain tags like |FILENAME|, |AUTHOR| etc. which are replaced
+ after reading (KDevelop templates can be used without any change).
++ indentation: multiline inserts and code snippets will be indented after insertion.
++ Most menu entries are now also active in normal mode.
++ new menu items:
+ includes for the C99 header,
+ includes for the standard C++ header,
+ includes for the C++ version of the Standard C Library header,
+ multiline C comment
+ vim modeline
++ Reading the templates is done in one function which can be called in an autocmd.
++ Code cleanup: register z no longer used. Most function calls are silent now.
+
+
diff --git a/.vim/c-support/doc/c-hotkeys.pdf b/.vim/c-support/doc/c-hotkeys.pdf
new file mode 100644
index 0000000..2ac88bc
--- /dev/null
+++ b/.vim/c-support/doc/c-hotkeys.pdf
Binary files differ
diff --git a/.vim/c-support/doc/c-hotkeys.tex b/.vim/c-support/doc/c-hotkeys.tex
new file mode 100644
index 0000000..d8dc844
--- /dev/null
+++ b/.vim/c-support/doc/c-hotkeys.tex
@@ -0,0 +1,366 @@
+%%=====================================================================================
+%%
+%% File: c-hotkeys.tex
+%%
+%% Description: c-support.vim : Key mappings for Vim without GUI.
+%%
+%%
+%% Author: Dr.-Ing. Fritz Mehner
+%% Email: mehner@fh-swf.de
+%% Copyright: Copyright (C) 2006-2010 Dr.-Ing. Fritz Mehner (mehner@fh-swf.de)
+%% Version: 1.0
+%% Created: 10.11.2006
+%% Revision: $Id: c-hotkeys.tex,v 1.33 2010/02/05 13:21:43 mehner Exp $
+%%
+%% Notes:
+%%
+%%=====================================================================================
+
+\documentclass[oneside,11pt,landscape,DIV16]{scrartcl}
+
+\usepackage[english]{babel}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{times}
+\usepackage{lastpage}
+\usepackage{multicol}
+\usepackage{setspace}
+
+\setlength\parindent{0pt}
+
+\newcommand{\Pluginversion}{5.10}
+\newcommand{\ReleaseDate}{ February 2010}
+
+%%----------------------------------------------------------------------
+%% luximono : Type1-font
+%% Makes keyword stand out by using semibold letters.
+%%----------------------------------------------------------------------
+\usepackage[scaled]{luximono}
+
+%%----------------------------------------------------------------------
+%% fancyhdr
+%%----------------------------------------------------------------------
+\usepackage{fancyhdr}
+\pagestyle{fancyplain}
+\fancyfoot[L]{\small \ReleaseDate}
+\fancyfoot[C]{c-support.vim}
+\fancyfoot[R]{\small \textbf{Page \thepage{} / \pageref{LastPage}}}
+\renewcommand{\headrulewidth}{0.0pt}
+
+%%----------------------------------------------------------------------
+%% hyperref
+%%----------------------------------------------------------------------
+\usepackage[ps2pdf]{hyperref}
+\hypersetup{pdfauthor={Dr.-Ing. Fritz Mehner, FH Südwestfalen, Iserlohn, Germany}}
+\hypersetup{pdfkeywords={Vim, C/C++}}
+\hypersetup{pdfsubject={Vim-plugin, c-support.vim, hot keys}}
+\hypersetup{pdftitle={Vim-plugin, c-support.vim, hot keys}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% START OF DOCUMENT
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}%
+
+\begin{multicols}{3}
+%
+%%======================================================================
+%% title
+%%======================================================================
+\begin{center}
+\textbf{\textsc{\small{Vim-Plugin}}}\\
+\textbf{\LARGE{c-support.vim}}\\
+\textbf{\textsc{\small{Version \Pluginversion}}}\\
+\textbf{\textsc{\Huge{Hot keys}}}\\
+Key mappings for Vim with and without GUI.\\
+Plugin: http://vim.sourceforge.net\\
+\vspace{3.0mm}
+{\normalsize (i)} insert mode, {\normalsize (n)} normal mode, {\normalsize (v)} visual mode\\
+\vspace{5.0mm}
+%
+%%======================================================================
+%% table, left part
+%%======================================================================
+%%~~~~~ TABULAR : begin ~~~~~~~~~~
+\begin{tabular}[]{|p{10mm}|p{60mm}|}
+%
+\hline
+\multicolumn{2}{|r|}{\textsl{\textbf{C}omments}} \\
+\hline \verb'\cl' & end-of-line comment \hfill (n,v,i)\\
+\hline \verb'\cj' & adjust end-of-line comment \hfill (n,v,i)\\
+\hline \verb'\cs' & set end-of-line comment column \hfill (n) \\
+\hline \verb'\c*' & code $\Rightarrow$ comment \verb'/* */' \hfill (n,v) \\
+\hline \verb'\cc' & code $\Rightarrow$ comment \verb'//' \hfill (n,v) \\
+\hline \verb'\co' & comment $\Rightarrow$ code \hfill (n,v) \\
+
+\hline \verb'\cfr' & frame comment \hfill (n,i)\\
+\hline \verb'\cfu' & function comment \hfill (n,i)\\
+\hline \verb'\cme' & method description \hfill (n,i)\\
+\hline \verb'\ccl' & class description \hfill (n,i)\\
+\hline \verb'\cfdi'& file description (implementation) \hfill (n,i)\\
+\hline \verb'\cfdh'& file description (header) \hfill (n,i)\\
+
+\hline \verb'\ccs'& C/C++--file sections\hspace{3mm}\footnotesize{(tab compl.)} \hfill \normalsize{(n,i)}\\
+\hline \verb'\chs'& H--file sections\hspace{10mm}\footnotesize{(tab compl.)} \hfill \normalsize{(n,i)}\\
+\hline \verb'\ckc'& keyword comment\hspace{5mm}\footnotesize{(tab compl.)} \hfill \normalsize{(n,i)}\\
+\hline \verb'\csc'& special comment\hspace{7,5mm}\footnotesize{(tab compl.)} \hfill \normalsize{(n,i)}\\
+
+\hline \verb'\cd' & date \hfill (n,v,i)\\
+\hline \verb'\ct' & date \& time \hfill (n,v,i)\\
+\hline
+\end{tabular}\\
+%%~~~~~ TABULAR : end ~~~~~~~~~~
+%
+%%======================================================================
+%% table, middle part
+%%======================================================================
+%
+%%~~~~~ TABULAR : begin ~~~~~~~~~~
+\begin{tabular}[]{|p{15mm}|p{55mm}|}
+%%----------------------------------------------------------------------
+%% menu statements
+%%----------------------------------------------------------------------
+\hline
+\multicolumn{2}{|r|}{\textsl{\textbf{S}tatements}} \\
+\hline \verb'\sd' & \verb'do { } while' \hfill (n,v,i)\\
+\hline \verb'\sf' & \verb'for' \hfill (n,i)\\
+\hline \verb'\sfo' & \verb'for { }' \hfill (n,v,i)\\
+\hline \verb'\si' & \verb'if' \hfill (n,i)\\
+\hline \verb'\sif' & \verb'if { }' \hfill (n,v,i)\\
+\hline \verb'\sie' & \verb'if else' \hfill (n,v,i)\\
+\hline \verb'\sife'& \verb'if { } else { }' \hfill (n,v,i)\\
+\hline \verb'\se' & \verb'else { }' \hfill (n,v,i)\\
+\hline \verb'\sw' & \verb'while' \hfill (n,i)\\
+\hline \verb'\swh' & \verb'while { }' \hfill (n,v,i)\\
+\hline \verb'\ss' & \verb'switch' \hfill (n,v,i)\\
+\hline \verb'\sc' & \verb'case' \hfill (n,i)\\
+\hline \verb'\s{ \sb' & \verb'{ }' \hfill (n,v,i)\\
+\hline
+%%----------------------------------------------------------------------
+%% preprocessor menu
+%%----------------------------------------------------------------------
+\hline
+\multicolumn{2}{|r|}{\textsl{\textbf{P}reprocessor}} \\
+\hline \verb'\ps' & choose a Std. Lib. include \hfill (n,i)\\
+\hline \verb'\pc' & choose a C99 include \hfill (n,i)\\
+\hline \verb'\p<' & \verb$#include<...>$ \hfill (n,i)\\
+\hline \verb'\p"' & \verb$#include"..."$ \hfill (n,i)\\
+\hline \verb'\pd' & \verb'#define' \hfill (n,i)\\
+\hline \verb'\pu' & \verb'#undef' \hfill (n,i)\\
+\hline \verb'\pie' & \verb'#if #else #endif' \hfill (n,v,i)\\
+\hline \verb'\pid' & \verb'#ifdef #else #endif' \hfill (n,v,i)\\
+\hline \verb'\pin' & \verb'#ifndef #else #endif' \hfill (n,v,i)\\
+\hline \verb'\pind' & \verb'#ifndef #def #endif' \hfill (n,v,i)\\
+\hline \verb'\pi0' & \verb'#if 0 #endif' \hfill (n,v,i)\\
+\hline \verb'\pr0' & remove \verb'#if 0 #endif' \hfill (n,i)\\
+\hline \verb'\pe' & \verb'#error ' \hfill (n,i)\\
+\hline \verb'\pl' & \verb'#line ' \hfill (n,i)\\
+\hline \verb'\pp' & \verb'#pragma' \hfill (n,i)\\
+\hline
+\end{tabular} \\
+%%~~~~~ TABULAR : end ~~~~~~~~~~
+
+%%======================================================================
+%% table, right part
+%%======================================================================
+%
+%%~~~~~ TABULAR : begin ~~~~~~~~~~
+\begin{tabular}[]{|p{11mm}|p{60mm}|}
+%%----------------------------------------------------------------------
+%% snippet menu
+%%----------------------------------------------------------------------
+\hline
+\multicolumn{2}{|r|}{\textsl{S\textbf{n}ippet}} \\
+\hline \verb'\nr' & read code snippet \hfill (n,i)\\
+\hline \verb'\nw' & write code snippet \hfill (n,v,i)\\
+\hline \verb'\ne' & edit code snippet \hfill (n,i)\\
+\hline \verb'\np' & pick up prototype \hfill (n,v,i)\\
+\hline \verb'\ni' & insert prototype(s) \hfill (n,i)\\
+\hline \verb'\nc' & clear prototype(s) \hfill (n,i)\\
+\hline \verb'\ns' & show prototype(s) \hfill (n,i)\\
+%
+\hline \verb'\ntl' & edit local templates \hfill (n,i)\\
+\hline \verb'\ntg' & edit global templates \hfill (n,i)\\
+\hline \verb'\ntr' & reread the templates \hfill (n,i)\\
+\hline \verb'\nts' & change templates style \hfill (n,i)\\
+\hline
+%%----------------------------------------------------------------------
+%% idioms menu
+%%----------------------------------------------------------------------
+\hline
+\multicolumn{2}{|r|}{\textsl{\textbf{I}dioms}} \\
+\hline \verb'\if' & function \hfill (n,v,i)\\
+\hline \verb'\isf' & static function \hfill (n,v,i)\\
+\hline \verb'\im' & \verb'main()' \hfill (n,v,i)\\
+\hline \verb'\i0' & \verb'for( x=0; x<n; x+=1 )' \hfill (n,v,i)\\
+\hline \verb'\in' & \verb'for( x=n-1; x>=0; x-=1 )' \hfill (n,v,i)\\
+\hline \verb'\ie' & \verb'enum' + \verb'typedef' \hfill (n,v,i)\\
+\hline \verb'\is' & \verb'struct' + \verb'typedef' \hfill (n,v,i)\\
+\hline \verb'\iu' & \verb'union' + \verb'typedef' \hfill (n,v,i)\\
+\hline \verb'\ip' & \verb'printf()' \hfill (n,i)\\
+\hline \verb'\isc' & \verb'scanf()' \hfill (n,i)\\
+\hline \verb'\ica' & \verb'p=calloc()' \hfill (n,i)\\
+\hline \verb'\ima' & \verb'p=malloc()' \hfill (n,i)\\
+\hline \verb'\isi' & \verb'sizeof()' \hfill (n,v,i)\\
+\hline \verb'\ias' & \verb'assert()' \hfill (n,v,i)\\
+\hline \verb'\ii' & open input file \hfill (n,v,i)\\
+\hline \verb'\io' & open output file \hfill (n,v,i)\\
+\hline
+\end{tabular}\\
+%
+%%======================================================================
+%% table, right part
+%%======================================================================
+%
+%%~~~~~ TABULAR : begin ~~~~~~~~~~
+\begin{tabular}[]{|p{12mm}|p{62mm}|}
+%%----------------------------------------------------------------------
+%% C++ menu
+%%----------------------------------------------------------------------
+\hline
+\multicolumn{2}{|r|}{\textsl{C\textbf{+}+}} \\
+\hline \verb'\+co' & \verb'cout << << endl; ' \hfill (n,i)\\
+\hline \verb'\+c' & class \hfill (n,i)\\
+\hline \verb'\+ps' & \verb$#include<...> STL$ \hfill (n,i)\\
+\hline \verb'\+pc' & \verb$#include<c..> C$ \hfill (n,i)\\
+\hline \verb'\+cn' & class (using \verb'new') \hfill (n,i)\\
+\hline \verb'\+ci' & class implementation \hfill (n,i)\\
+\hline \verb'\+cni' & class (using \verb'new') implementation \hfill (n,i)\\
+\hline \verb'\+mi' & method implementation \hfill (n,i)\\
+\hline \verb'\+ai' & accessor implementation \hfill (n,i)\\
+\hline \verb'\+tc' & template class \hfill (n,i)\\
+\hline \verb'\+tcn' & template class (using \verb'new') \hfill (n,i)\\
+\hline \verb'\+tci' & template class implementation \hfill (n,i)\\
+\hline \verb'\+tcni'& template class (using \verb'new') impl. \hfill (n,i)\\
+\hline \verb'\+tmi' & template method implementation \hfill (n,i)\\
+\hline \verb'\+tai' & template accessor implementation \hfill (n,i)\\
+\hline \verb'\+tf' & template function \hfill (n,i)\\
+\hline \verb'\+ec' & error class \hfill (n,i)\\
+\hline \verb'\+tr' & \verb'try' \dots \verb'catch' \hfill (n,v,i)\\
+\hline \verb'\+ca' & \verb'catch' \hfill (n,v,i)\\
+\hline \verb'\+c.' & \verb'catch(...)' \hfill (n,v,i)\\
+\hline
+%%----------------------------------------------------------------------
+%% run menu
+%%----------------------------------------------------------------------
+\hline
+\multicolumn{2}{|r|}{\textsl{\textbf{R}un}} \\
+\hline \verb'\rc' & save and compile \hfill (n,i)\\
+\hline \verb'\rl' & link \hfill (n,i)\\
+\hline \verb'\rr' & run \hfill (n,i)\\
+\hline \verb'\ra' & set comand line arguments \hfill (n,i)\\
+\hline \verb'\rm' & run \texttt{make} \hfill (n,i)\\
+\hline \verb'\rg' & cmd.\ line arg.\ for \texttt{make} \hfill (n,i)\\
+%
+\hline \verb'\rp' & run \texttt{splint}$^1$ \hfill (n,i)\\
+\hline \verb'\ri' & cmd.\ line arg.\ for \texttt{splint} \hfill (n,i)\\
+%
+\hline \verb'\rk' & run \texttt{CodeCheck}$^2$ \hfill (n,i)\\
+\hline \verb'\re' & cmd.\ line arg.\ for \texttt{CodeCheck} \hfill (n,i)\\
+%
+\hline \verb'\rd' & run \texttt{indent} \hfill (n,i)\\
+\hline \verb'\rh' & hardcopy buffer \hfill (n,i,v)\\
+\hline \verb'\rs' & show plugin settings \hfill (n,i)\\
+\hline \verb'\rx' & set xterm size \hfill (n,i, only Unix \& GUI)\\
+\hline \verb'\ro' & change output destination \hfill (n,i)\\
+\hline
+\end{tabular}
+%
+%%----------------------------------------------------------------------
+%% load / unload menu entry
+%%----------------------------------------------------------------------
+\begin{tabular}[]{|p{12mm}|p{52mm}|}
+\hline
+%\multicolumn{2}{|r|}{\textsl{Menu(s)}}\\
+%%----------------------------------------------------------------------
+%% show plugin help
+%%----------------------------------------------------------------------
+%\hline
+\multicolumn{2}{|r|}{\textsl{\textbf{H}elp and Menus}}\\
+\hline \verb'\hm' & show manual \hfill (n,i)\\
+\hline \verb'\hp' & help (c-support) \hfill (n,i)\\
+\hline \verb'\lcs' & load Menus\hfill \scriptsize{(n \& GUI only)}\\
+\hline \verb'\ucs' & unload Menus\hfill \scriptsize{(n \& GUI only)}\\
+\hline
+\end{tabular}
+%%~~~~~ TABULAR : end ~~~~~~~~~~
+%
+%
+\begin{minipage}[b]{66mm}%
+\vspace{10mm}
+%
+\begin{flushleft}
+%
+\textit{Ex commands:}
+\begin{description}
+%
+\item [CFileSection]
+C/C++--file sections (same as \verb'\ccs')
+%
+\item [HFileSection]
+H--file sections (same as \verb'\chs')
+%
+\item [KeywordComment]
+keyword comment (same as \verb'\ckc')
+%
+\item [SpecialComment]
+special comment (same as \verb'\csc')
+%
+\item [IncludeStdLibrary]
+standard library includes (same as \verb'\ps')
+%
+\item [IncludeC99Library]
+C99 includes (same as \verb'\pc')
+%
+\item [IncludeCppLibrary]
+STL includes (same as \verb'\+ps')
+%
+\item [IncludeCppCLibrary]
+C includes (same as \verb'\+pc')
+%
+\item [CStyle]
+C99 include (same as \verb'\nts')
+%
+\end{description}
+%
+Use tab expansion to show the items to choose from.
+%
+\end{flushleft}
+%
+\end{minipage}\\
+%
+\begin{minipage}[b]{64mm}%
+\scriptsize{%
+\vspace{10mm}
+\hrulefill\\
+$^1$ {www.splint.org}\\
+$^2$ \textbf{CodeCheck}$^{TM}$ is a product of Abraxas Software, Inc.
+}%
+\end{minipage}\\
+%
+\begin{minipage}[b]{64mm}%
+
+\setlength{\fboxsep}{.25mm}
+%%----------------------------------------------------------------------
+%% Additional Mappings
+%%----------------------------------------------------------------------
+\begin{spacing}{1.2}
+\begin{tabular}[]{|p{12mm}|p{56mm}|}
+\hline
+\multicolumn{2}{|r|}{\textsl{Additional Mappings}}\\
+\hline
+\hline \textbf{typing} & \textbf{expansion}\\
+\hline \verb'/*' & \verb'/* */' \hfill (i)\\
+\hline \verb'/*' & \verb'/* '\fbox{\small{(multiline) marked text}}\verb' */' \hfill (v)\\
+\hline \verb'/*<CR>' & \verb'/*'\hfill (i)\newline\verb' * |'\newline\verb' */'\\
+\hline \verb'{<CR>' & \verb'{'\hfill (i)\newline\verb' |'\newline\verb'}' \\
+\hline \verb'{<CR>' & \verb'{'\hfill (v)\newline\verb' '\fbox{\small{(multiline) marked text}}\newline\verb'}'\\
+\hline
+\end{tabular}
+\end{spacing}
+%%~~~~~ TABULAR : end ~~~~~~~~~~
+%
+\end{minipage}%
+%
+\end{center}
+\end{multicols}
+\end{document}
diff --git a/.vim/c-support/rc/customization.ctags b/.vim/c-support/rc/customization.ctags
new file mode 100644
index 0000000..323cbbc
--- /dev/null
+++ b/.vim/c-support/rc/customization.ctags
@@ -0,0 +1,8 @@
+
+--regex-make=/^([^:# \t]+)[ \t]*:($|[^=]+)/\1/t,targets/
+--regex-make=/^include[ \t]+(.+)/\1/i,includes/
+
+--langdef=qmake
+--langmap=qmake:+.pro
+--regex-qmake=/^([[:upper:]_]+)/\1/t,SystemVariables/
+
diff --git a/.vim/c-support/rc/customization.gvimrc b/.vim/c-support/rc/customization.gvimrc
new file mode 100644
index 0000000..31befe7
--- /dev/null
+++ b/.vim/c-support/rc/customization.gvimrc
@@ -0,0 +1,57 @@
+"===================================================================================
+" FILE: .gvimrc
+" DESCRIPTION: suggestion for a personal configuration file ~/.gvimrc
+" AUTHOR: Dr.-Ing. Fritz Mehner
+" VERSION: 1.0
+" CREATED: 04.04.2009
+" REVISION: $Id: customization.gvimrc,v 1.3 2009/04/04 08:26:21 mehner Exp $
+"===================================================================================
+"
+"===================================================================================
+" GENERAL SETTINGS
+"===================================================================================
+set cmdheight=2 " Make command line two lines high
+set mousehide " Hide the mouse when typing text
+
+highlight Normal guibg=grey90
+highlight Cursor guibg=Blue guifg=NONE
+highlight lCursor guibg=Cyan guifg=NONE
+highlight NonText guibg=grey80
+highlight Constant gui=NONE guibg=grey95
+highlight Special gui=NONE guibg=grey95
+"
+let c_comment_strings=1 " highlight strings inside C comments
+"
+"-------------------------------------------------------------------------------
+" Moving cursor to other windows
+"
+" shift down : change window focus to lower one (cyclic)
+" shift up : change window focus to upper one (cyclic)
+" shift left : change window focus to one on left
+" shift right : change window focus to one on right
+"-------------------------------------------------------------------------------
+nmap <s-down> <c-w>w
+nmap <s-up> <c-w>W
+nmap <s-left> <c-w>h
+nmap <s-right> <c-w>l
+"
+"-------------------------------------------------------------------------------
+" some additional hot keys
+"-------------------------------------------------------------------------------
+" S-F3 - call gvim file browser
+"-------------------------------------------------------------------------------
+ map <silent> <s-F3> :silent browse confirm e<CR>
+imap <silent> <s-F3> <Esc>:silent browse confirm e<CR>
+"
+"-------------------------------------------------------------------------------
+" toggle insert mode <--> 'normal mode with the <RightMouse>-key
+"-------------------------------------------------------------------------------
+"
+nmap <RightMouse> <Insert>
+imap <RightMouse> <ESC>
+"
+"-------------------------------------------------------------------------------
+" use font with clearly distinguishable brackets : ()[]{}
+"-------------------------------------------------------------------------------
+"set guifont=Luxi\ Mono\ 14
+"
diff --git a/.vim/c-support/rc/customization.indent.pro b/.vim/c-support/rc/customization.indent.pro
new file mode 100644
index 0000000..95f6081
--- /dev/null
+++ b/.vim/c-support/rc/customization.indent.pro
@@ -0,0 +1,8 @@
+--blank-lines-after-procedures
+--brace-indent0
+--comment-indentation49
+--declaration-comment-column49
+--declaration-indentation10
+--space-after-parentheses
+--swallow-optional-blank-lines
+--tab-size2
diff --git a/.vim/c-support/rc/customization.vimrc b/.vim/c-support/rc/customization.vimrc
new file mode 100644
index 0000000..917018a
--- /dev/null
+++ b/.vim/c-support/rc/customization.vimrc
@@ -0,0 +1,222 @@
+"===================================================================================
+" FILE: .vimrc
+" DESCRIPTION: suggestion for a personal configuration file ~/.vimrc
+" AUTHOR: Dr.-Ing. Fritz Mehner
+" CREATED: 04.04.2009
+" REVISION: $Id: customization.vimrc,v 1.6 2009/10/03 12:24:30 mehner Exp $
+"===================================================================================
+"
+"===================================================================================
+" GENERAL SETTINGS
+"===================================================================================
+
+"-------------------------------------------------------------------------------
+" Use Vim settings, rather then Vi settings.
+" This must be first, because it changes other options as a side effect.
+"-------------------------------------------------------------------------------
+set nocompatible
+"
+"-------------------------------------------------------------------------------
+" Enable file type detection. Use the default filetype settings.
+" Also load indent files, to automatically do language-dependent indenting.
+"-------------------------------------------------------------------------------
+filetype plugin on
+filetype indent on
+"
+"-------------------------------------------------------------------------------
+" Switch syntax highlighting on.
+"-------------------------------------------------------------------------------
+syntax on
+"
+" Platform specific items:
+" - central backup directory (has to be created)
+" - default dictionary
+" Uncomment your choice.
+if has("win16") || has("win32") || has("win64") ||
+ \ has("win95") || has("win32unix")
+ "
+" runtime mswin.vim
+" set backupdir =$VIM\vimfiles\backupdir
+" set dictionary=$VIM\vimfiles\wordlists/german.list
+else
+" set backupdir =$HOME/.vim.backupdir
+" set dictionary=$HOME/.vim/wordlists/german.list
+endif
+"
+" Using a backupdir under UNIX/Linux: you may want to include a line similar to
+" find $HOME/.vim.backupdir -name "*" -type f -mtime +60 -exec rm -f {} \;
+" in one of your shell startup files (e.g. $HOME/.profile)
+"
+"-------------------------------------------------------------------------------
+" Various settings
+"-------------------------------------------------------------------------------
+set autoindent " copy indent from current line
+set autoread " read open files again when changed outside Vim
+set autowrite " write a modified buffer on each :next , ...
+set backspace=indent,eol,start " backspacing over everything in insert mode
+set backup " keep a backup file
+set browsedir=current " which directory to use for the file browser
+set complete+=k " scan the files given with the 'dictionary' option
+set history=50 " keep 50 lines of command line history
+set hlsearch " highlight the last used search pattern
+set incsearch " do incremental searching
+set listchars=tab:>.,eol:\$ " strings to use in 'list' mode
+set mouse=a " enable the use of the mouse
+set nowrap " do not wrap lines
+set popt=left:8pc,right:3pc " print options
+set ruler " show the cursor position all the time
+set shiftwidth=2 " number of spaces to use for each step of indent
+set showcmd " display incomplete commands
+set smartindent " smart autoindenting when starting a new line
+set tabstop=2 " number of spaces that a <Tab> counts for
+set visualbell " visual bell instead of beeping
+set wildignore=*.bak,*.o,*.e,*~ " wildmenu: ignore these extensions
+set wildmenu " command-line completion in an enhanced mode
+"
+"===================================================================================
+" BUFFERS, WINDOWS
+"===================================================================================
+"
+"-------------------------------------------------------------------------------
+" The current directory is the directory of the file in the current window.
+"-------------------------------------------------------------------------------
+if has("autocmd")
+ autocmd BufEnter * :lchdir %:p:h
+endif
+"
+"-------------------------------------------------------------------------------
+" close window (conflicts with the KDE setting for calling the process manager)
+"-------------------------------------------------------------------------------
+ noremap <C-Esc> :close<CR>
+inoremap <C-Esc> <C-C>:close<CR>
+"
+"-------------------------------------------------------------------------------
+" Fast switching between buffers
+" The current buffer will be saved before switching to the next one.
+" Choose :bprevious or :bnext
+"-------------------------------------------------------------------------------
+ noremap <silent> <s-tab> :if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+inoremap <silent> <s-tab> <C-C>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+"
+"-------------------------------------------------------------------------------
+" Leave the editor with Ctrl-q (KDE): Write all changed buffers and exit Vim
+"-------------------------------------------------------------------------------
+nnoremap <C-q> :wqall<CR>
+"
+"-------------------------------------------------------------------------------
+" When editing a file, always jump to the last known cursor position.
+" Don't do it when the position is invalid or when inside an event handler
+" (happens when dropping a file on gvim).
+"-------------------------------------------------------------------------------
+if has("autocmd")
+ autocmd BufReadPost *
+ \ if line("'\"") > 0 && line("'\"") <= line("$") |
+ \ exe "normal! g`\"" |
+ \ endif
+endif " has("autocmd")
+"
+"-------------------------------------------------------------------------------
+" some additional hot keys
+"-------------------------------------------------------------------------------
+" F2 - write file without confirmation
+" F3 - call file explorer Ex
+" F4 - show tag under curser in the preview window (tagfile must exist!)
+" F5 - open quickfix error window
+" F6 - close quickfix error window
+" F7 - display previous error
+" F8 - display next error
+"-------------------------------------------------------------------------------
+"
+map <silent> <F2> :write<CR>
+map <silent> <F3> :Explore<CR>
+nmap <silent> <F4> :exe ":ptag ".expand("<cword>")<CR>
+map <silent> <F5> :copen<CR>
+map <silent> <F6> :cclose<CR>
+map <silent> <F7> :cp<CR>
+map <silent> <F8> :cn<CR>
+"
+imap <silent> <F2> <Esc>:write<CR>
+imap <silent> <F3> <Esc>:Explore<CR>
+imap <silent> <F4> <Esc>:exe ":ptag ".expand("<cword>")<CR>
+imap <silent> <F5> <Esc>:copen<CR>
+imap <silent> <F6> <Esc>:cclose<CR>
+imap <silent> <F7> <Esc>:cp<CR>
+imap <silent> <F8> <Esc>:cn<CR>
+"
+"-------------------------------------------------------------------------------
+" Fast switching between buffers
+" The current buffer will be saved before switching to the next one.
+" Choose :bprevious or :bnext
+"-------------------------------------------------------------------------------
+"
+ map <silent> <s-tab> <Esc>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+imap <silent> <s-tab> <Esc>:if &modifiable && !&readonly &&
+ \ &modified <CR> :write<CR> :endif<CR>:bprevious<CR>
+"
+"-------------------------------------------------------------------------------
+" Leave the editor with Ctrl-q : Write all changed buffers and exit Vim
+"-------------------------------------------------------------------------------
+nmap <C-q> :wqa<CR>
+"
+"-------------------------------------------------------------------------------
+" comma always followed by a space
+"-------------------------------------------------------------------------------
+inoremap , ,<Space>
+"
+"-------------------------------------------------------------------------------
+" autocomplete parenthesis, brackets and braces
+"-------------------------------------------------------------------------------
+inoremap ( ()<Left>
+inoremap [ []<Left>
+inoremap { {}<Left>
+"
+vnoremap ( s()<Esc>P<Right>%
+vnoremap [ s[]<Esc>P<Right>%
+vnoremap { s{}<Esc>P<Right>%
+"
+"-------------------------------------------------------------------------------
+" autocomplete quotes (visual and select mode)
+"-------------------------------------------------------------------------------
+xnoremap ' s''<Esc>P<Right>
+xnoremap " s""<Esc>P<Right>
+xnoremap ` s``<Esc>P<Right>
+"
+"-------------------------------------------------------------------------------
+" Change the working directory to the directory containing the current file
+"-------------------------------------------------------------------------------
+if has("autocmd")
+ autocmd BufEnter * :lchdir %:p:h
+endif " has("autocmd")
+"
+"===================================================================================
+" VARIOUS PLUGIN CONFIGURATIONS
+"===================================================================================
+"
+"-------------------------------------------------------------------------------
+" c.vim
+"-------------------------------------------------------------------------------
+"
+" --empty --
+"
+"-------------------------------------------------------------------------------
+" 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_GainFocus_On_ToggleOpen = 1
+let Tlist_Close_On_Select = 1
+
+let tlist_make_settings = 'make;m:makros;t:targets'
+let tlist_qmake_settings = 'qmake;t:SystemVariables'
+
+if has("autocmd")
+ " ---------- qmake : set filetype for *.pro ----------
+ autocmd BufNewFile,BufRead *.pro set filetype=qmake
+endif " has("autocmd")
+
diff --git a/.vim/c-support/scripts/wrapper.sh b/.vim/c-support/scripts/wrapper.sh
new file mode 100755
index 0000000..f78861c
--- /dev/null
+++ b/.vim/c-support/scripts/wrapper.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+#===============================================================================
+# FILE: wrapper.sh
+# USAGE: ./wrapper.sh executable [cmd-line-args]
+# DESCRIPTION: Wraps the execution of a programm or script.
+# Use with xterm: xterm -e wrapper.sh executable cmd-line-args
+# This script is used by the plugins c.vim
+# OPTIONS: ---
+# REQUIREMENTS: ---
+# BUGS: ---
+# NOTES: ---
+# AUTHOR: Dr.-Ing. Fritz Mehner (Mn), mehner@fh-swf.de
+# COMPANY: Fachhochschule Südwestfalen, Iserlohn
+# CREATED: 23.11.2004 18:04:01 CET
+# REVISION: $Id: wrapper.sh,v 1.5 2009/06/03 17:47:06 mehner Exp $
+#===============================================================================
+
+executable="${1}" # name of the executable
+
+if [ ${#} -ge 1 ] && [ -x "$executable" ]
+then
+ "${@}"
+ returncode=$?
+ [ $returncode -ne 0 ] && printf "'${@}' returned ${returncode}\n"
+else
+ printf "\n !! file \"${executable}\" does not exist or is not executable !!\n"
+ returncode=126 # command invoked cannot execute
+fi
+read -p " ... press return key ... " dummy
+exit $returncode
diff --git a/.vim/c-support/templates/Templates b/.vim/c-support/templates/Templates
new file mode 100644
index 0000000..5841481
--- /dev/null
+++ b/.vim/c-support/templates/Templates
@@ -0,0 +1,30 @@
+$
+$ =============================================================
+$ ========== USER MACROS ======================================
+$ =============================================================
+$
+|AUTHOR| = bryan newbold
+|AUTHORREF| = bnewbold
+|EMAIL| = bnewbold@robocracy.org
+|COMPANY| =
+|COPYRIGHT| = Copyright (c) |YEAR|, |AUTHOR|
+|STYLE| = default
+$
+$ =============================================================
+$ ========== FILE INCLUDES ====================================
+$ =============================================================
+$
+|includefile| = c.comments.template
+|includefile| = c.cpp.template
+|includefile| = c.idioms.template
+|includefile| = c.preprocessor.template
+|includefile| = c.statements.template
+$
+== IF |STYLE| IS CPP ==
+|includefile| = cpp.comments.template
+|includefile| = cpp.cpp.template
+|includefile| = cpp.idioms.template
+|includefile| = cpp.preprocessor.template
+|includefile| = cpp.statements.template
+== ENDIF ==
+$
diff --git a/.vim/c-support/templates/c.comments.template b/.vim/c-support/templates/c.comments.template
new file mode 100644
index 0000000..a500103
--- /dev/null
+++ b/.vim/c-support/templates/c.comments.template
@@ -0,0 +1,160 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.end-of-line-comment == append ==
+/* <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.frame ==
+/*---------------------------------------------------------------------------
+ * <CURSOR>
+ *---------------------------------------------------------------------------*/
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.function ==
+/*
+ * === FUNCTION =============================================================
+ * Name: |?FUNCTION_NAME|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.method ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME|
+ * Method: |?CLASSNAME| :: |?METHODNAME|
+ * Description: <CURSOR>
+ *-----------------------------------------------------------------------------
+ */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.class ==
+/*
+ * ============================================================================
+ * Class: |?CLASSNAME|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-description == start ==
+/*-----------------------------------------------------------------------------
+ *
+ * Filename: |FILENAME|
+ * Author: |AUTHOR| (|AUTHORREF|), |EMAIL|
+ * Created: |DATE| |TIME|
+ * Description: <CURSOR>
+ *
+ *---------------------------------------------------------------------------*/
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-description-header == start ==
+/*-----------------------------------------------------------------------------
+ *
+ * Filename: |FILENAME|
+ * Author: |AUTHOR| (|AUTHORREF|), |EMAIL|
+ * Created: |DATE| |TIME|
+ * Description: <CURSOR>
+ *
+ *---------------------------------------------------------------------------*/
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-header-includes ==
+/* ##### HEADER FILE INCLUDES ########################################## */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-macros ==
+/* ##### MACROS - LOCAL TO THIS SOURCE FILE ########################## */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-typedefs ==
+/* ##### TYPE DEFINITIONS - LOCAL TO THIS SOURCE FILE ################ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-data-types ==
+/* ##### DATA TYPES - LOCAL TO THIS SOURCE FILE ###################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-defs ==
+/* ##### CLASS DEFINITIONS - LOCAL TO THIS SOURCE FILE ############### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-local-variables ==
+/* ##### VARIABLES - LOCAL TO THIS SOURCE FILE ####################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-prototypes ==
+/* ##### PROTOTYPES - LOCAL TO THIS SOURCE FILE ###################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-exported ==
+/* ##### FUNCTION DEFINITIONS - EXPORTED FUNCTIONS ################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-local ==
+/* ##### FUNCTION DEFINITIONS - LOCAL TO THIS SOURCE FILE ############ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-exported ==
+/* ##### CLASS IMPLEMENTATIONS - EXPORTED CLASSES #################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-local ==
+/* ##### CLASS IMPLEMENTATIONS - LOCAL CLASSES ####################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-header-includes ==
+/* ##### HEADER FILE INCLUDES ########################################## */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-macros ==
+/* ##### EXPORTED MACROS ############################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-typedefs ==
+/* ##### EXPORTED TYPE DEFINITIONS ##################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-data-types ==
+/* ##### EXPORTED DATA TYPES ########################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-class-defs ==
+/* ##### EXPORTED CLASS DEFINITIONS #################################### */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-variables ==
+/* ##### EXPORTED VARIABLES ############################################ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-function-declarations ==
+/* ##### EXPORTED FUNCTION DECLARATIONS ################################ */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-bug == append ==
+ /* :BUG:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+== comment.keyword-compiler == append ==
+ /* :COMPILER:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+== comment.keyword-todo == append ==
+ /* :TODO:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+== comment.keyword-tricky == append ==
+ /* :TRICKY:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+== comment.keyword-warning == append ==
+ /* :WARNING:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+== comment.keyword-workaround == append ==
+ /* :WORKAROUND:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+== comment.keyword-keyword == append ==
+ /* :|?KEYWORD:u|:|DATE| |TIME|:|AUTHORREF|: <CURSOR> */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.special-empty == append ==
+ /* EMPTY */<CURSOR>
+== comment.special-fall-through == append ==
+ /* FALL THROUGH */<CURSOR>
+== comment.special-implicit-type-conversion == append ==
+ /* IMPLICIT TYPE CONVERSION */<CURSOR>
+== comment.special-no-return == append ==
+ /* NO RETURN */<CURSOR>
+== comment.special-not-reached == append ==
+ /* NOT REACHED */<CURSOR>
+== comment.special-remains-to-be-implemented == append ==
+ /* REMAINS TO BE IMPLEMENTED */<CURSOR>
+== comment.special-constant-type-is-long == append ==
+ /* constant type is long */<CURSOR>
+== comment.special-constant-type-is-unsigned == append ==
+ /* constant type is unsigned */<CURSOR>
+== comment.special-constant-type-is-unsigned-long == append ==
+ /* constant type is unsigned long */<CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/c.cpp.template b/.vim/c-support/templates/c.cpp.template
new file mode 100644
index 0000000..97b9082
--- /dev/null
+++ b/.vim/c-support/templates/c.cpp.template
@@ -0,0 +1,487 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+$
+== cpp.cin ==
+cin >> <CURSOR>;
+$
+== cpp.cout ==
+cout << <CURSOR> << endl;
+$
+== cpp.cout-operator == insert ==
+<< "<CURSOR>"
+$
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.output-manipulator-boolalpha == insert ==
+<< boolalpha <CURSOR>
+== cpp.output-manipulator-dec == insert ==
+<< dec <CURSOR>
+== cpp.output-manipulator-endl == insert ==
+<< endl <CURSOR>
+== cpp.output-manipulator-fixed == insert ==
+<< fixed <CURSOR>
+== cpp.output-manipulator-flush == insert ==
+<< flush <CURSOR>
+== cpp.output-manipulator-hex == insert ==
+<< hex <CURSOR>
+== cpp.output-manipulator-internal == insert ==
+<< internal <CURSOR>
+== cpp.output-manipulator-left == insert ==
+<< left <CURSOR>
+== cpp.output-manipulator-oct == insert ==
+<< oct <CURSOR>
+== cpp.output-manipulator-right == insert ==
+<< right <CURSOR>
+== cpp.output-manipulator-scientific == insert ==
+<< scientific <CURSOR>
+== cpp.output-manipulator-setbase == insert ==
+<< setbase(10<CURSOR>)
+== cpp.output-manipulator-setfill == insert ==
+<< setfill(<CURSOR>)
+== cpp.output-manipulator-setiosflag == insert ==
+<< setiosflags(<CURSOR>)
+== cpp.output-manipulator-setprecision == insert ==
+<< setprecision(6<CURSOR>)
+== cpp.output-manipulator-setw == insert ==
+<< setw(0<CURSOR>)
+== cpp.output-manipulator-showbase == insert ==
+<< showbase <CURSOR>
+== cpp.output-manipulator-showpoint == insert ==
+<< showpoint <CURSOR>
+== cpp.output-manipulator-showpos == insert ==
+<< showpos <CURSOR>
+== cpp.output-manipulator-uppercase == insert ==
+<< uppercase <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.method-implementation ==
+void<CURSOR>
+|?CLASSNAME|::|?METHODNAME| ( <+argument list+> )
+{
+ return ;
+} /* ----- end of method |CLASSNAME|::|?METHODNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.accessor-implementation ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME|
+ * Method: get_|?ATTRIBUTE|
+ *-----------------------------------------------------------------------------
+ */
+inline int<CURSOR>
+|CLASSNAME|::get_|ATTRIBUTE| ( )
+{
+ return |ATTRIBUTE|;
+} /* ----- end of method |CLASSNAME|::get_|ATTRIBUTE| ----- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: set_|ATTRIBUTE|
+ *-----------------------------------------------------------------------------
+ */
+inline void
+|CLASSNAME|::set_|ATTRIBUTE| ( <+argument list+> )
+{
+ |ATTRIBUTE| = value;
+ return ;
+} /* ----- end of method |CLASSNAME|::set_|ATTRIBUTE| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-definition ==
+/*
+ * ============================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+class |CLASSNAME|
+{
+ public:
+ /* ==================== LIFECYCLE ============================== */
+ |CLASSNAME| (); /* constructor */
+
+ /* ==================== ACCESSORS ============================== */
+
+ /* ==================== MUTATORS ============================== */
+
+ /* ==================== OPERATORS ============================== */
+
+ protected:
+ /* ==================== DATA MEMBERS ============================== */
+
+ private:
+ /* ==================== DATA MEMBERS ============================== */
+
+}; /* ----- end of class |CLASSNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-implementation ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME:c|
+ * Method: |CLASSNAME|
+ * Description: constructor
+ *-----------------------------------------------------------------------------
+ */
+|CLASSNAME|::|CLASSNAME| ()
+{<CURSOR>
+} /* ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-using-new-definition ==
+/*
+ * ============================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+class |CLASSNAME|
+{
+ public:
+
+ /* ==================== LIFECYCLE ============================== */
+ |CLASSNAME| (); /* constructor */
+ |CLASSNAME| ( const |CLASSNAME| &other ); /* copy constructor */
+ ~|CLASSNAME| (); /* destructor */
+
+ /* ==================== ACCESSORS ============================== */
+
+ /* ==================== MUTATORS ============================== */
+
+ /* ==================== OPERATORS ============================== */
+
+ |CLASSNAME|& operator = ( const |CLASSNAME| &other ); /* assignment operator */
+
+ protected:
+ /* ==================== DATA MEMBERS ============================== */
+
+ private:
+ /* ==================== DATA MEMBERS ============================== */
+
+}; /* ----- end of class |CLASSNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-using-new-implementation ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME:c|
+ * Method: |CLASSNAME|
+ * Description: constructor
+ *-----------------------------------------------------------------------------
+ */
+|CLASSNAME|::|CLASSNAME| ()
+{<CURSOR>
+} /* ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) ----- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: copy constructor
+ *-----------------------------------------------------------------------------
+ */
+|CLASSNAME|::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} /* ----- end of method |CLASSNAME|::|CLASSNAME| (copy constructor) ----- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: ~|CLASSNAME|
+ * Description: destructor
+ *-----------------------------------------------------------------------------
+ */
+|CLASSNAME|::~|CLASSNAME| ()
+{
+} /* ----- end of method |CLASSNAME|::~|CLASSNAME| (destructor) ----- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: operator =
+ * Description: assignment operator
+ *-----------------------------------------------------------------------------
+ */
+|CLASSNAME|&
+|CLASSNAME|::operator = ( const |CLASSNAME| &other )
+{
+ if ( this != &other ) {
+ }
+ return *this;
+} /* ----- end of method |CLASSNAME|::operator = (assignment operator) ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.error-class ==
+/*
+ * ============================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+class |CLASSNAME|
+{
+ public: |CLASSNAME| ( string msg = "|CLASSNAME|" ):message(msg) { }
+ virtual ~|CLASSNAME| ( ) { }
+ virtual string what ( ) const throw ( ) { return message; }
+ protected: string message;
+}; /* ----- end of class |CLASSNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-method-implementation ==
+template < class T >
+void<CURSOR> |?CLASSNAME|<T>::|?METHODNAME| ( <+argument list+> )
+{
+ return ;
+} /* ----- end of method |CLASSNAME|<T>::|METHODNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-accessor-implementation ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME|
+ * Method: get_|?ATTRIBUTE|
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+inline int<CURSOR> |CLASSNAME|<T>::get_|ATTRIBUTE| ( )
+{
+ return |ATTRIBUTE|;
+} /* ----- end of method |CLASSNAME|<T>::get_|ATTRIBUTE| ----- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: set_|ATTRIBUTE|
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+inline void |CLASSNAME|<T>::set_|ATTRIBUTE| ( <+argument list+> )
+{
+ |ATTRIBUTE| = value;
+ return ;
+} /* ----- end of method |CLASSNAME|<T>::set_|ATTRIBUTE| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-definition ==
+/*
+ * ============================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ /* ==================== LIFECYCLE ============================== */
+ |CLASSNAME| (); /* constructor */
+
+ /* ==================== ACCESSORS ============================== */
+
+ /* ==================== MUTATORS ============================== */
+
+ /* ==================== OPERATORS ============================== */
+
+ protected:
+ /* ==================== DATA MEMBERS ============================== */
+
+ private:
+ /* ==================== DATA MEMBERS ============================== */
+
+}; /* ---------- end of template class |CLASSNAME| ---------- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-implementation ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME:c|
+ * Method: |CLASSNAME|
+ * Description:
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME| < T >::|CLASSNAME| ()
+{<CURSOR>
+} /* ---------- end of constructor of template class |CLASSNAME| ---------- */
+
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-using-new-definition ==
+/*
+ * ============================================================================
+ * Class: |?CLASSNAME:c|
+ * Description: <CURSOR>
+ * ============================================================================
+ */
+
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE ==============================
+ |CLASSNAME| (); /* constructor */
+ |CLASSNAME| ( const |CLASSNAME| &other ); /* copy constructor */
+ ~|CLASSNAME| (); /* destructor */
+
+ /* ==================== ACCESSORS ============================== */
+
+ /* ==================== MUTATORS ============================== */
+
+ /* ==================== OPERATORS ============================== */
+
+ |CLASSNAME|& operator = ( const |CLASSNAME| &other ); // assignment operator
+
+ protected:
+ /* ==================== DATA MEMBERS ============================== */
+
+ private:
+ /* ==================== DATA MEMBERS ============================== */
+
+}; /* ----- end of template class |CLASSNAME| ----- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-using-new-implementation ==
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |?CLASSNAME:c|
+ * Method: |CLASSNAME|
+ * Description: constructor
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >::|CLASSNAME| ()
+{<CURSOR>
+} /* ---------- end of constructor of template class |CLASSNAME| ---------- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: |CLASSNAME|
+ * Description: copy constructor
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} /* ---------- end of copy constructor of template class |CLASSNAME| ---------- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: ~|CLASSNAME|
+ * Description: destructor
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >::~|CLASSNAME| ()
+{
+} /* ---------- end of destructor of template class |CLASSNAME| ---------- */
+
+/*
+ *-----------------------------------------------------------------------------
+ * Class: |CLASSNAME|
+ * Method: operator =
+ * Description: assignment operator
+ *-----------------------------------------------------------------------------
+ */
+template < class T >
+|CLASSNAME|< T >& |CLASSNAME|< T >::operator = ( const |CLASSNAME| &other )
+{
+ return *this;
+} /* ---------- end of assignment operator of template class |CLASSNAME| ---------- */
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-function ==
+template <class T>
+void<CURSOR> |?TEMPALTE_FUNCTION_NAME| ( <+argument list+> )
+{
+ return ;
+} /* ----- end of template function |?TEMPALTE_FUNCTION_NAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-in ==
+ostream &
+operator << ( ostream & os, const |?CLASSNAME| & obj )
+{
+ os << obj.<CURSOR> ;
+ return os;
+} /* ----- end of function operator << ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-out ==
+istream &
+operator >> ( istream & is, |?CLASSNAME| & obj )
+{
+ is >> obj.<CURSOR> ;
+ return is;
+} /* ----- end of function operator >> ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.try-catch ==
+try {
+<SPLIT>}
+catch ( const <CURSOR> &ExceptObj ) { /* handle exception: */
+}
+catch (...) { /* handle exception: unspecified */
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch ==
+catch ( <CURSOR>const &ExceptObj ) { /* handle exception: */
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch-points ==
+catch (...) { /* handle exception: */
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.extern ==
+extern "C" {<CURSOR>
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== 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 */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-output-file ==
+char *ofs_file_name = "<CURSOR>"; /* output file name */
+ofstream ofs; /* create ofstream object */
+
+ofs.open (ofs_file_name); /* open ofstream */
+if (!ofs) {
+ cerr << "\nERROR : failed to open output file " << ofs_file_name << endl;
+ exit (EXIT_FAILURE);
+}
+<SPLIT>{-continue here-}
+ofs.close (); /* close ofstream */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.namespace-std ==
+using namespace std;
+== cpp.namespace ==
+using namespace |?NAMESPACE|;
+== cpp.namespace-block ==
+namespace |?NAMESPACE| {<CURSOR>
+<SPLIT>} /* ----- end of namespace |NAMESPACE| ----- */
+== cpp.namespace-alias ==
+namespace |?NAMESPACE_ALIAS| = {-original namespace name-};
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.rtti-typeid == insert ==
+typeid(<CURSOR><SPLIT>)
+$
+== cpp.rtti-static-cast == insert ==
+static_cast<>(<CURSOR><SPLIT>)
+$
+== cpp.rtti-const-cast == insert ==
+const_cast<>(<CURSOR><SPLIT>)
+$
+== cpp.rtti-reinterpret-cast == insert ==
+reinterpret_cast<>(<CURSOR><SPLIT>)
+$
+== cpp.rtti-dynamic-cast == insert ==
+dynamic_cast<>(<CURSOR><SPLIT>)
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/c.idioms.template b/.vim/c-support/templates/c.idioms.template
new file mode 100644
index 0000000..4565fab
--- /dev/null
+++ b/.vim/c-support/templates/c.idioms.template
@@ -0,0 +1,133 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function ==
+/*
+ * === FUNCTION ======================================================================
+ * Name: |?FUNCTION_NAME|
+ * Description:
+ * =====================================================================================
+ */
+void<CURSOR>
+|FUNCTION_NAME| ( <+argument list+> )
+{
+<SPLIT> return <+return value+>;
+} /* ----- end of function |FUNCTION_NAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function-static ==
+/*
+ * === FUNCTION ======================================================================
+ * Name: |?FUNCTION_NAME|
+ * Description:
+ * =====================================================================================
+ */
+static void<CURSOR>
+|FUNCTION_NAME| ( <+argument list+> )
+{
+<SPLIT> return <+return value+>;
+} /* ----- end of static function |FUNCTION_NAME| ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.main ==
+#include <stdlib.h>
+
+/*
+ * === FUNCTION ======================================================================
+ * Name: main
+ * Description:
+ * =====================================================================================
+ */
+int
+main ( int argc, char *argv[] )
+{<CURSOR>
+<SPLIT> return EXIT_SUCCESS;
+} /* ---------- end of function main ---------- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.enum ==
+enum |?ENUM_NAME| {<CURSOR>
+<SPLIT>}; /* ---------- end of enum |ENUM_NAME| ---------- */
+
+typedef enum |ENUM_NAME| |ENUM_NAME:c|;
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.struct ==
+struct |?STRUCT_NAME| {<CURSOR>
+<SPLIT>}; /* ---------- end of struct |STRUCT_NAME| ---------- */
+
+typedef struct |STRUCT_NAME| |STRUCT_NAME:c|;
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.union ==
+union |?UNION_NAME| {<CURSOR>
+<SPLIT>}; /* ---------- end of union |UNION_NAME| ---------- */
+
+typedef union |UNION_NAME| |UNION_NAME:c|;
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.printf == insert ==
+printf ( "<CURSOR>\n" );
+== idioms.scanf == insert ==
+scanf ( "<CURSOR>", & );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.calloc ==
+|?POINTER| = calloc ( (size_t)(<CURSOR><+COUNT+>), sizeof(<+TYPE+>) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+|POINTER| = NULL;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.malloc ==
+|?POINTER| = malloc ( sizeof(<CURSOR><+TYPE+>) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+|POINTER| = NULL;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.sizeof == insert ==
+sizeof(<CURSOR><SPLIT>)
+== idioms.assert == insert ==
+assert(<CURSOR><SPLIT>);
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-input-file ==
+FILE *|?FILEPOINTER|; /* input-file pointer */
+char *|FILEPOINTER|_file_name = "<CURSOR>"; /* input-file name */
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "r" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+<SPLIT>{-continue here-}
+if( fclose(|FILEPOINTER|) == EOF ) { /* close input file */
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-output-file ==
+FILE *|?FILEPOINTER|; /* output-file pointer */
+char *|FILEPOINTER|_file_name = "<CURSOR>"; /* output-file name */
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "w" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+<SPLIT>{-continue here-}
+if( fclose(|FILEPOINTER|) == EOF ) { /* close output file */
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.fprintf == insert ==
+fprintf ( |?FILEPOINTER|, "<CURSOR>\n", );
+== idioms.fscanf == insert ==
+fscanf ( |?FILEPOINTER|, "<CURSOR>", & );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/c.preprocessor.template b/.vim/c-support/templates/c.preprocessor.template
new file mode 100644
index 0000000..f3aa127
--- /dev/null
+++ b/.vim/c-support/templates/c.preprocessor.template
@@ -0,0 +1,49 @@
+$-------------------------------------------------------------------------
+== preprocessor.include-global ==
+#include <<CURSOR>>
+$-------------------------------------------------------------------------
+== preprocessor.include-local ==
+#include "<CURSOR>"
+$-------------------------------------------------------------------------
+== preprocessor.define ==
+#define <CURSOR> /* */
+$-------------------------------------------------------------------------
+== preprocessor.undefine ==
+#undef <CURSOR> /* */
+$-------------------------------------------------------------------------
+== preprocessor.if-else-endif ==
+#if |?CONDITION:u|
+<CURSOR><SPLIT>
+#else /* ----- not |CONDITION| ----- */
+<+ELSE PART+>
+#endif /* ----- not |CONDITION| ----- */
+$-------------------------------------------------------------------------
+== preprocessor.ifdef-else-endif ==
+#ifdef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else /* ----- not |CONDITION| ----- */
+<+ELSE PART+>
+#endif /* ----- not |CONDITION| ----- */
+$-------------------------------------------------------------------------
+== preprocessor.ifndef-else-endif ==
+#ifndef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else /* ----- not |CONDITION| ----- */
+<+ELSE PART+>
+#endif /* ----- not |CONDITION| ----- */
+$-------------------------------------------------------------------------
+== preprocessor.ifndef-def-endif ==
+#ifndef |?BASENAME:L|_INC
+#define |BASENAME|_INC
+<CURSOR><SPLIT>
+#endif /* ----- #ifndef |BASENAME|_INC ----- */
+$-------------------------------------------------------------------------
+== preprocessor.error ==
+#error "<CURSOR>" /* */
+$-------------------------------------------------------------------------
+== preprocessor.line ==
+#line <CURSOR> /* */
+$-------------------------------------------------------------------------
+== preprocessor.pragma ==
+#pragma <CURSOR> /* */
+$-------------------------------------------------------------------------
diff --git a/.vim/c-support/templates/c.statements.template b/.vim/c-support/templates/c.statements.template
new file mode 100644
index 0000000..574366d
--- /dev/null
+++ b/.vim/c-support/templates/c.statements.template
@@ -0,0 +1,69 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.do-while ==
+do {
+<SPLIT>} while ( <CURSOR> ); /* ----- end do-while ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for ==
+for ( <CURSOR>; ; )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for-block ==
+for ( <CURSOR>; ; ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if ==
+if ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block ==
+if ( <CURSOR> ) {
+<SPLIT><-IF PART->
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-else ==
+if ( <CURSOR> )
+<SPLIT>else
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block-else ==
+if ( <CURSOR> ) {
+<SPLIT><-IF PART->
+}
+else {
+<-ELSE PART->
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.else-block ==
+else {
+<CURSOR><SPLIT>
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while ==
+while ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while-block ==
+while ( <CURSOR> ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.switch ==
+switch ( <CURSOR> ) {
+ case <-LABEL->:
+ <SPLIT>break;
+
+ case <-LABEL->:
+ break;
+
+ case <-LABEL->:
+ break;
+
+ default:
+ break;
+} /* ----- end switch ----- */
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.case ==
+case <CURSOR>:
+break;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.block ==
+{
+<CURSOR><SPLIT>
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.comments.template b/.vim/c-support/templates/cpp.comments.template
new file mode 100644
index 0000000..b91ed44
--- /dev/null
+++ b/.vim/c-support/templates/cpp.comments.template
@@ -0,0 +1,168 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.end-of-line-comment == append ==
+// <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.frame ==
+//----------------------------------------------------------------------
+// <CURSOR>
+//----------------------------------------------------------------------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.function ==
+// === FUNCTION ======================================================================
+// Name: |?FUNCTION_NAME|
+// Description: <CURSOR>
+// =====================================================================================
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.method ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: |?METHODNAME|
+// Description: <CURSOR>
+//--------------------------------------------------------------------------------------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.class ==
+// =====================================================================================
+// Class: |?CLASSNAME|
+// Description: <CURSOR>
+// =====================================================================================
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-description == start ==
+// =====================================================================================
+//
+// Filename: |FILENAME|
+//
+// Description: <CURSOR>
+//
+// Version: 1.0
+// Created: |DATE| |TIME|
+// Revision: none
+// Compiler: g++
+//
+// Author: |AUTHOR| (|AUTHORREF|), |EMAIL|
+// Company: |COMPANY|
+//
+// =====================================================================================
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-description-header == start ==
+// =====================================================================================
+//
+// Filename: |FILENAME|
+//
+// Description: <CURSOR>
+//
+// Version: 1.0
+// Created: |DATE| |TIME|
+// Revision: none
+// Compiler: g++
+//
+// Author: |AUTHOR| (|AUTHORREF|), |EMAIL|
+// Company: |COMPANY|
+//
+// =====================================================================================
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-header-includes ==
+// ##### HEADER FILE INCLUDES ###################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-macros ==
+// ##### MACROS - LOCAL TO THIS SOURCE FILE ###################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-typedefs ==
+// ##### TYPE DEFINITIONS - LOCAL TO THIS SOURCE FILE #########################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-data-types ==
+// ##### DATA TYPES - LOCAL TO THIS SOURCE FILE ###############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-defs ==
+// ##### CLASS DEFINITIONS - LOCAL TO THIS SOURCE FILE ########################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-local-variables ==
+// ##### VARIABLES - LOCAL TO THIS SOURCE FILE ################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-prototypes ==
+// ##### PROTOTYPES - LOCAL TO THIS SOURCE FILE ###############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-exported ==
+// ##### FUNCTION DEFINITIONS - EXPORTED FUNCTIONS ############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-function-defs-local ==
+// ##### FUNCTION DEFINITIONS - LOCAL TO THIS SOURCE FILE #####################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-exported ==
+// ##### CLASS IMPLEMENTATIONS - EXPORTED CLASSES #############################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-cpp-class-implementations-local ==
+// ##### CLASS IMPLEMENTATIONS - LOCAL CLASSES ################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-header-includes ==
+// ##### HEADER FILE INCLUDES ###################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-macros ==
+// ##### EXPORTED MACROS ########################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-typedefs ==
+// ##### EXPORTED TYPE DEFINITIONS ##############################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-data-types ==
+// ##### EXPORTED DATA TYPES ####################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-class-defs ==
+// ##### EXPORTED CLASS DEFINITIONS #############################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-variables ==
+// ##### EXPORTED VARIABLES #####################################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.file-section-hpp-exported-function-declarations ==
+// ##### EXPORTED FUNCTION DECLARATIONS #########################################
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.keyword-bug == append ==
+ // :BUG:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+== comment.keyword-compiler == append ==
+ // :COMPILER:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+== comment.keyword-todo == append ==
+ // :TODO:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+== comment.keyword-tricky == append ==
+ // :TRICKY:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+== comment.keyword-warning == append ==
+ // :WARNING:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+== comment.keyword-workaround == append ==
+ // :WORKAROUND:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+== comment.keyword-keyword == append ==
+ // :|?KEYWORD:u|:|DATE| |TIME|:|AUTHORREF|: <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== comment.special-empty == append ==
+ // EMPTY<CURSOR>
+== comment.special-fall-through == append ==
+ // FALL THROUGH<CURSOR>
+== comment.special-implicit-type-conversion == append ==
+ // IMPLICIT TYPE CONVERSION<CURSOR>
+== comment.special-no-return == append ==
+ // NO RETURN<CURSOR>
+== comment.special-not-reached == append ==
+ // NOT REACHED<CURSOR>
+== comment.special-remains-to-be-implemented == append ==
+ // REMAINS TO BE IMPLEMENTED<CURSOR>
+== comment.special-constant-type-is-long == append ==
+ // constant type is long<CURSOR>
+== comment.special-constant-type-is-unsigned == append ==
+ // constant type is unsigned<CURSOR>
+== comment.special-constant-type-is-unsigned-long == append ==
+ // constant type is unsigned long<CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.cpp.template b/.vim/c-support/templates/cpp.cpp.template
new file mode 100644
index 0000000..6bdbe8b
--- /dev/null
+++ b/.vim/c-support/templates/cpp.cpp.template
@@ -0,0 +1,450 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+$
+== cpp.cin ==
+cin >> <CURSOR>;
+$
+== cpp.cout ==
+cout << <CURSOR> << endl;
+$
+== cpp.cout-operator == insert ==
+<< "<CURSOR>"
+$
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.output-manipulator-boolalpha == insert ==
+<< boolalpha <CURSOR>
+== cpp.output-manipulator-dec == insert ==
+<< dec <CURSOR>
+== cpp.output-manipulator-endl == insert ==
+<< endl <CURSOR>
+== cpp.output-manipulator-fixed == insert ==
+<< fixed <CURSOR>
+== cpp.output-manipulator-flush == insert ==
+<< flush <CURSOR>
+== cpp.output-manipulator-hex == insert ==
+<< hex <CURSOR>
+== cpp.output-manipulator-internal == insert ==
+<< internal <CURSOR>
+== cpp.output-manipulator-left == insert ==
+<< left <CURSOR>
+== cpp.output-manipulator-oct == insert ==
+<< oct <CURSOR>
+== cpp.output-manipulator-right == insert ==
+<< right <CURSOR>
+== cpp.output-manipulator-scientific == insert ==
+<< scientific <CURSOR>
+== cpp.output-manipulator-setbase == insert ==
+<< setbase(10<CURSOR>)
+== cpp.output-manipulator-setfill == insert ==
+<< setfill(<CURSOR>)
+== cpp.output-manipulator-setiosflag == insert ==
+<< setiosflags(<CURSOR>)
+== cpp.output-manipulator-setprecision == insert ==
+<< setprecision(6<CURSOR>)
+== cpp.output-manipulator-setw == insert ==
+<< setw(0<CURSOR>)
+== cpp.output-manipulator-showbase == insert ==
+<< showbase <CURSOR>
+== cpp.output-manipulator-showpoint == insert ==
+<< showpoint <CURSOR>
+== cpp.output-manipulator-showpos == insert ==
+<< showpos <CURSOR>
+== cpp.output-manipulator-uppercase == insert ==
+<< uppercase <CURSOR>
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.method-implementation ==
+void<CURSOR>
+|?CLASSNAME|::|?METHODNAME| ( <+argument list+> )
+{
+ return ;
+} // ----- end of method |CLASSNAME|::|METHODNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.accessor-implementation ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: get_|?ATTRIBUTE|
+//--------------------------------------------------------------------------------------
+inline int<CURSOR>
+|CLASSNAME|::get_|ATTRIBUTE| ( )
+{
+ return |ATTRIBUTE|;
+} // ----- end of method |CLASSNAME|::get_|ATTRIBUTE| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: set_|ATTRIBUTE|
+//--------------------------------------------------------------------------------------
+inline void
+|CLASSNAME|::set_|ATTRIBUTE| ( <+argument list+> )
+{
+ |ATTRIBUTE| = value;
+ return ;
+} // ----- end of method |CLASSNAME|::set_|ATTRIBUTE| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-definition ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+
+ // ==================== ACCESSORS =======================================
+
+ // ==================== MUTATORS =======================================
+
+ // ==================== OPERATORS =======================================
+
+ protected:
+ // ==================== DATA MEMBERS =======================================
+
+ private:
+ // ==================== DATA MEMBERS =======================================
+
+}; // ----- end of class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-implementation ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::|CLASSNAME| ()
+{<CURSOR>
+} // ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-using-new-definition ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+ |CLASSNAME| ( const |CLASSNAME| &other ); // copy constructor
+ ~|CLASSNAME| (); // destructor
+
+ // ==================== ACCESSORS =======================================
+
+ // ==================== MUTATORS =======================================
+
+ // ==================== OPERATORS =======================================
+
+ |CLASSNAME|& operator = ( const |CLASSNAME| &other ); // assignment operator
+
+ protected:
+ // ==================== DATA MEMBERS =======================================
+
+ private:
+ // ==================== DATA MEMBERS =======================================
+
+}; // ----- end of class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.class-using-new-implementation ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::|CLASSNAME| ()
+{<CURSOR>
+} // ----- end of method |CLASSNAME|::|CLASSNAME| (constructor) -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: copy constructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::|CLASSNAME| ( const |CLASSNAME| &other )
+{
+} // ----- end of method |CLASSNAME|::|CLASSNAME| (copy constructor) -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: ~|CLASSNAME|
+// Description: destructor
+//--------------------------------------------------------------------------------------
+|CLASSNAME|::~|CLASSNAME| ()
+{
+} // ----- end of method |CLASSNAME|::~|CLASSNAME| (destructor) -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: operator =
+// Description: assignment operator
+//--------------------------------------------------------------------------------------
+|CLASSNAME|&
+|CLASSNAME|::operator = ( const |CLASSNAME| &other )
+{
+ if ( this != &other ) {
+ }
+ return *this;
+} // ----- end of method |CLASSNAME|::operator = (assignment operator) -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.error-class ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+class |CLASSNAME|
+{
+ public: |CLASSNAME| ( string msg = "|CLASSNAME|" ):message(msg) { }
+ virtual ~|CLASSNAME| ( ) { }
+ virtual string what ( ) const throw ( ) { return message; }
+ protected: string message;
+}; // ---------- end of class |CLASSNAME| ----------
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-method-implementation ==
+template < class T >
+void<CURSOR> |?CLASSNAME|<T>::|?METHODNAME| ( <+argument list+> )
+{
+ return ;
+} // ----- end of method |CLASSNAME|<T>::|METHODNAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-accessor-implementation ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: get_|?ATTRIBUTE|
+//--------------------------------------------------------------------------------------
+template < class T >
+inline int<CURSOR> |CLASSNAME|<T>::get_|ATTRIBUTE| ( )
+{
+ return |ATTRIBUTE|;
+} // ----- end of method |CLASSNAME|<T>::get_|ATTRIBUTE| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: set_|ATTRIBUTE|
+//--------------------------------------------------------------------------------------
+template < class T >
+inline void |CLASSNAME|<T>::set_|ATTRIBUTE| ( <+argument list+> )
+{
+ |ATTRIBUTE| = value;
+ return ;
+} // ----- end of method |CLASSNAME|<T>::set_|ATTRIBUTE| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-definition ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+
+ // ==================== ACCESSORS =======================================
+
+ // ==================== MUTATORS =======================================
+
+ // ==================== OPERATORS =======================================
+
+ protected:
+ // ==================== DATA MEMBERS =======================================
+
+ private:
+ // ==================== DATA MEMBERS =======================================
+
+}; // ----- end of template class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-implementation ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME| <T>:: |CLASSNAME| ()
+{<CURSOR>
+} // ----- end of constructor of template class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-using-new-definition ==
+// =====================================================================================
+// Class: |?CLASSNAME:c|
+// Description: <CURSOR>
+// =====================================================================================
+
+template < class T >
+class |CLASSNAME|
+{
+ public:
+
+ // ==================== LIFECYCLE =======================================
+ |CLASSNAME| (); // constructor
+ |CLASSNAME| ( const |CLASSNAME| &other ); // copy constructor
+ ~|CLASSNAME| (); // destructor
+
+ // ==================== ACCESSORS =======================================
+
+ // ==================== MUTATORS =======================================
+
+ // ==================== OPERATORS =======================================
+
+ |CLASSNAME|& operator = ( const |CLASSNAME| &other ); // assignment operator
+
+ protected:
+ // ==================== DATA MEMBERS =======================================
+
+ private:
+ // ==================== DATA MEMBERS =======================================
+
+}; // ----- end of template class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-class-using-new-implementation ==
+//--------------------------------------------------------------------------------------
+// Class: |?CLASSNAME|
+// Method: |CLASSNAME|
+// Description: constructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>::|CLASSNAME| ()
+{
+} // ----- end of constructor of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: |CLASSNAME|
+// Description: copy constructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>::|CLASSNAME| ( const |CLASSNAME| &other )
+{<CURSOR>
+} // ----- end of copy constructor of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: ~|CLASSNAME|
+// Description: destructor
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>::~|CLASSNAME| ()
+{
+} // ----- end of destructor of template class |CLASSNAME| -----
+
+//--------------------------------------------------------------------------------------
+// Class: |CLASSNAME|
+// Method: operator =
+// Description: assignment operator
+//--------------------------------------------------------------------------------------
+template < class T >
+|CLASSNAME|<T>& |CLASSNAME|<T>::operator = ( const |CLASSNAME| &other )
+{
+ if ( this != &other ) {
+ }
+ return *this;
+} // ----- end of assignment operator of template class |CLASSNAME| -----
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.template-function ==
+template <class T>
+void<CURSOR> |?TEMPALTE_FUNCTION_NAME| ( <+argument list+> )
+{
+ return ;
+} // ----- end of template function |?TEMPALTE_FUNCTION_NAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-in ==
+ostream &
+operator << ( ostream & os, const |?CLASSNAME| & obj )
+{
+ os << obj.<CURSOR> ;
+ return os;
+} // ----- end of function operator << -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.operator-out ==
+istream &
+operator >> ( istream & is, |?CLASSNAME| & obj )
+{
+ is >> obj.<CURSOR> ;
+ return is;
+} // ----- end of function operator >> -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.try-catch ==
+try {
+<SPLIT>}
+catch ( const <CURSOR> &ExceptObj ) { // handle exception:
+}
+catch (...) { // handle exception: unspecified
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch ==
+catch ( <CURSOR>const &ExceptObj ) { // handle exception:
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.catch-points ==
+catch (...) { // handle exception:
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.extern ==
+extern "C" {<CURSOR>
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-input-file ==
+string ifs_file_name = "<CURSOR>"; // input file name
+ifstream ifs; // create ifstream object
+
+ifs.open ( ifs_file_name.c_str() ); // 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
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.open-output-file ==
+string ofs_file_name = "<CURSOR>"; // input file name
+ofstream ofs; // create ofstream object
+
+ofs.open ( ofs_file_name.c_str() ); // open ofstream
+if (!ofs) {
+ cerr << "\nERROR : failed to open output file " << ofs_file_name << endl;
+ exit (EXIT_FAILURE);
+}
+<SPLIT>{-continue here-}
+ofs.close (); // close ofstream
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.namespace-std ==
+using namespace std;
+== cpp.namespace ==
+using namespace |?NAMESPACE|;
+== cpp.namespace-block ==
+namespace |?NAMESPACE| {<CURSOR>
+<SPLIT>} // ----- end of namespace |NAMESPACE| -----
+== cpp.namespace-alias ==
+namespace |?NAMESPACE_ALIAS| = {-original namespace name-};
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== cpp.rtti-typeid == insert ==
+typeid(<CURSOR><SPLIT>)
+$
+== cpp.rtti-static-cast == insert ==
+static_cast<>(<CURSOR><SPLIT>)
+$
+== cpp.rtti-const-cast == insert ==
+const_cast<>(<CURSOR><SPLIT>)
+$
+== cpp.rtti-reinterpret-cast == insert ==
+reinterpret_cast<>(<CURSOR><SPLIT>)
+$
+== cpp.rtti-dynamic-cast == insert ==
+dynamic_cast<>(<CURSOR><SPLIT>)
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.idioms.template b/.vim/c-support/templates/cpp.idioms.template
new file mode 100644
index 0000000..fa09ba8
--- /dev/null
+++ b/.vim/c-support/templates/cpp.idioms.template
@@ -0,0 +1,109 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function ==
+void<CURSOR>
+|?FUNCTION_NAME| ( <+argument list+> )
+{
+<SPLIT> return <+return value+>;
+} // ----- end of function |FUNCTION_NAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.function-static ==
+static void<CURSOR>
+|?FUNCTION_NAME| ( <+argument list+> )
+{
+<SPLIT> return <+return value+>;
+} // ----- end of static function |FUNCTION_NAME| -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.main ==
+#include <cstdlib>
+
+int
+main ( int argc, char *argv[] )
+{<CURSOR>
+<SPLIT> return EXIT_SUCCESS;
+} // ---------- end of function main ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.enum ==
+enum |?ENUM_NAME| {<CURSOR>
+<SPLIT>}; // ---------- end of enum |ENUM_NAME| ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.struct ==
+struct |?STRUCT_NAME| {<CURSOR>
+<SPLIT>}; // ---------- end of struct |STRUCT_NAME| ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.union ==
+union |?UNION_NAME| {<CURSOR>
+<SPLIT>}; // ---------- end of union |UNION_NAME| ----------
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.printf == insert ==
+printf ( "<CURSOR>\n" );
+== idioms.scanf == insert ==
+scanf ( "<CURSOR>", & );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.calloc ==
+|?POINTER| = calloc ( (size_t)(<CURSOR><+COUNT+>), sizeof(<+TYPE+>) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+|POINTER| = NULL;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.malloc ==
+|?POINTER| = malloc ( sizeof(<CURSOR><+TYPE+>) );
+if ( |POINTER|==NULL ) {
+ fprintf ( stderr, "\ndynamic memory allocation failed\n" );
+ exit (EXIT_FAILURE);
+}
+
+free (|POINTER|);
+|POINTER| = NULL;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.sizeof == insert ==
+sizeof(<CURSOR><SPLIT>)
+== idioms.assert == insert ==
+assert(<CURSOR><SPLIT>);
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-input-file ==
+FILE *|?FILEPOINTER|; // input-file pointer
+char *|FILEPOINTER|_file_name = "<CURSOR>"; // input-file name
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "r" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+<SPLIT>{-continue here-}
+if( fclose(|FILEPOINTER|) == EOF ) { // close input file
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.open-output-file ==
+FILE *|?FILEPOINTER|; // output-file pointer
+char *|FILEPOINTER|_file_name = "<CURSOR>"; // output-file name
+
+|FILEPOINTER| = fopen( |FILEPOINTER|_file_name, "w" );
+if ( |FILEPOINTER| == NULL ) {
+ fprintf ( stderr, "couldn't open file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+<SPLIT>{-continue here-}
+if( fclose(|FILEPOINTER|) == EOF ) { // close output file
+ fprintf ( stderr, "couldn't close file '%s'; %s\n",
+ |FILEPOINTER|_file_name, strerror(errno) );
+ exit (EXIT_FAILURE);
+}
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== idioms.fprintf == insert ==
+fprintf ( |?FILEPOINTER|, "<CURSOR>\n", );
+== idioms.fscanf == insert ==
+fscanf ( |?FILEPOINTER|, "<CURSOR>", & );
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/templates/cpp.preprocessor.template b/.vim/c-support/templates/cpp.preprocessor.template
new file mode 100644
index 0000000..68de87f
--- /dev/null
+++ b/.vim/c-support/templates/cpp.preprocessor.template
@@ -0,0 +1,50 @@
+$-------------------------------------------------------------------------
+== preprocessor.include-global ==
+#include <<CURSOR>>
+$-------------------------------------------------------------------------
+== preprocessor.include-local ==
+#include "<CURSOR>"
+$-------------------------------------------------------------------------
+== preprocessor.define ==
+#define <CURSOR> //
+$-------------------------------------------------------------------------
+== preprocessor.undefine ==
+#undef <CURSOR> //
+$-------------------------------------------------------------------------
+== preprocessor.if-else-endif ==
+#if |?CONDITION:u|
+<CURSOR><SPLIT>
+#else // ----- not |CONDITION| -----
+<+ELSE PART+>
+
+#endif // ----- not |CONDITION| -----
+$-------------------------------------------------------------------------
+== preprocessor.ifdef-else-endif ==
+#ifdef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else // ----- not |CONDITION| -----
+<+ELSE PART+>
+#endif // ----- not |CONDITION| -----
+$-------------------------------------------------------------------------
+== preprocessor.ifndef-else-endif ==
+#ifndef |?CONDITION:u|
+<CURSOR><SPLIT>
+#else // ----- not |CONDITION| -----
+<+ELSE PART+>
+#endif // ----- not |CONDITION| -----
+$-------------------------------------------------------------------------
+== preprocessor.ifndef-def-endif ==
+#ifndef |?BASENAME:L|_INC
+#define |BASENAME|_INC
+<CURSOR><SPLIT>
+#endif // ----- #ifndef |BASENAME|_INC -----
+$-------------------------------------------------------------------------
+== preprocessor.error ==
+#error "<CURSOR>" //
+$-------------------------------------------------------------------------
+== preprocessor.line ==
+#line <CURSOR> //
+$-------------------------------------------------------------------------
+== preprocessor.pragma ==
+#pragma <CURSOR> //
+$-------------------------------------------------------------------------
diff --git a/.vim/c-support/templates/cpp.statements.template b/.vim/c-support/templates/cpp.statements.template
new file mode 100644
index 0000000..c2fdecb
--- /dev/null
+++ b/.vim/c-support/templates/cpp.statements.template
@@ -0,0 +1,72 @@
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.do-while ==
+do {
+<SPLIT>} while ( <CURSOR> ); // ----- end do-while -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for ==
+for ( <CURSOR>; ; )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.for-block ==
+for ( <CURSOR>; ; ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if ==
+if ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block ==
+if ( <CURSOR> ) {
+<SPLIT><-IF PART->
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-else ==
+if ( <CURSOR> )
+<SPLIT>else
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.if-block-else ==
+if ( <CURSOR> ) {
+<SPLIT><-IF PART->
+}
+else {
+<+ELSE PART+>
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.else-block ==
+else {
+<CURSOR><SPLIT>
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while ==
+while ( <CURSOR> )
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.while-block ==
+while ( <CURSOR> ) {
+<SPLIT>}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.switch ==
+switch ( <CURSOR> ) {
+ case 1:
+ <SPLIT>break;
+
+ case 2:
+ break;
+
+ case 3:
+ break;
+
+ case 4:
+ break;
+
+ default:
+ break;
+} // ----- end switch -----
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.case ==
+case <CURSOR>:
+break;
+
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+== statements.block ==
+{
+<CURSOR><SPLIT>
+}
+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/.vim/c-support/wordlists/c-c++-keywords.list b/.vim/c-support/wordlists/c-c++-keywords.list
new file mode 100644
index 0000000..5a97dd6
--- /dev/null
+++ b/.vim/c-support/wordlists/c-c++-keywords.list
@@ -0,0 +1,209 @@
+adjustfield
+basefield
+boolalpha
+floatfield
+internal
+scientific
+setbase
+setiosflags
+setprecision
+showbase
+showpoint
+showpos
+uppercase
+
+auto
+break
+case
+char
+const
+continue
+default
+double
+else
+enum
+extern
+float
+goto
+inline
+long
+register
+restrict
+return
+short
+signed
+sizeof
+static
+struct
+switch
+typedef
+union
+unsigned
+void
+volatile
+while
+_Bool
+_Complex
+_Imaginary
+EXIT_FAILURE
+EXIT_SUCCESS
+
+bool
+catch
+class
+const_cast
+delete
+dynamic_cast
+explicit
+export
+false
+friend
+mutable
+namespace
+operator
+private
+protected
+public
+reinterpret_cast
+static_cast
+template
+this
+throw
+true
+typeid
+typename
+using
+virtual
+wchar_t
+
+and_eq
+bitand
+bitor
+compl
+not_eq
+or_eq
+xor_eq
+
+define
+defined
+elif
+endif
+error
+ifdef
+ifndef
+include
+pragma
+undef
+
+exception
+bad_alloc
+bad_exception
+bad_cast
+bad_typeid
+ios_base::failure
+logic_error
+domain_error
+invalid_argument
+length_error
+out_of_range
+runtime_error
+range_error
+overflow_error
+underflow_error
+uncaught_exception
+
+__DATE__
+__FILE__
+__LINE__
+__STDC__
+__STDC_HOSTED__
+__STDC_IEC_559__
+__STDC_IEC_559_COMPLEX__
+__STDC_ISO_10646__
+__STDC_VERSION__
+__TIME__
+__func__
+__cplusplus
+
+__BORLANDC__
+__CYGWIN__
+__CYGWIN32__
+__GNUC__
+__WIN32__
+__WINDOWS__
+
+assert
+ctype
+errno
+float
+limits
+locale
+math
+setjmp
+signal
+stdarg
+stddef
+stdio
+stdlib
+string
+time
+
+complex
+fenv
+inttypes
+iso646
+stdbool
+stdint
+tgmath
+wchar
+wctype
+
+algorithm
+bitset
+complex
+deque
+exception
+fstream
+functional
+iomanip
+ios
+iosfwd
+iostream
+istream
+iterator
+limits
+list
+locale
+
+map
+memory
+new
+numeric
+ostream
+queue
+set
+sstream
+stack
+stdexcept
+streambuf
+string
+typeinfo
+utility
+valarray
+vector
+
+cassert
+cctype
+cerrno
+cfloat
+climits
+clocale
+cmath
+csetjmp
+csignal
+cstdarg
+cstddef
+cstdio
+cstdlib
+cstring
+ctime
diff --git a/.vim/c-support/wordlists/k+r.list b/.vim/c-support/wordlists/k+r.list
new file mode 100644
index 0000000..805756a
--- /dev/null
+++ b/.vim/c-support/wordlists/k+r.list
@@ -0,0 +1,108 @@
+address
+allocator
+allocation
+argument
+arithmetic
+array
+assignement
+bitwise
+block
+character
+command
+condition
+conditional
+constant
+conversion
+declaration
+decrement
+defined
+definition
+descriptor
+description
+dimension
+evaluation
+expression
+external
+format
+formatted
+function
+global
+handling
+identifier
+implementation
+increment
+initialization
+input
+interface
+label
+lexical
+local
+logical
+lookup
+loop
+lvalue
+miscellaneous
+notation
+numerical
+operator
+operation
+output
+pointer
+precedence
+preprocessor
+preprocessing
+program
+random
+recursion
+recursive
+reference
+referential
+relational
+scope
+standard
+statement
+string
+structure
+system
+undefined
+variable
+
+abstract
+algorithm
+alignment
+application
+assignment
+asynchronous
+binary
+buffer
+component
+constructor
+container
+destructor
+difference
+enumeration
+exception
+floating-point
+horizontal
+inheritance
+instantiation
+integer
+internal
+invariant
+iterator
+localization
+overflow
+overload
+override
+overwrite
+polymorphic
+portability
+position
+postcondition
+precision
+precondition
+prototype
+subscript
+underflow
+vertical
+whitespace
diff --git a/.vim/c-support/wordlists/stl_index.list b/.vim/c-support/wordlists/stl_index.list
new file mode 100644
index 0000000..b5d98a3
--- /dev/null
+++ b/.vim/c-support/wordlists/stl_index.list
@@ -0,0 +1,202 @@
+accumulate
+adjacent_difference
+adjacent_find
+advance
+append
+assign
+auto_ptr
+back
+back_inserter
+basic_string
+bidirectional_iterator
+bidirectional_iterator_tag
+binary_compose
+binary_function
+binary_negate
+binary_search
+bind1st
+bind2nd
+bit_vector
+bitset
+capacity
+char_producer
+char_traits
+char_type
+compare
+construct
+copy
+copy_backward
+copy_n
+count
+count_if
+deque
+destroy
+distance
+distance_type
+divides
+equal
+equal_range
+equal_to
+erase
+fill
+fill_n
+find
+find_end
+find_first_not_of
+find_first_of
+find_if
+find_last_not_of
+find_last_of
+for_each
+forward_iterator
+forward_iterator_tag
+front
+front_inserter
+generate
+generate_n
+get_temporary_buffer
+greater
+greater_equal
+hash
+hash_map
+hash_multimap
+hash_multiset
+hash_set
+identity
+includes
+inner_product
+inplace_merge
+input_iterator
+input_iterator_tag
+insert
+insert_iterator
+inserter
+int_type
+iota
+is_heap
+is_sorted
+istream_iterator
+istream_type
+istreambuf_iterator
+iter_swap
+iterator_category
+iterator_traits
+less
+less_equal
+lexicographical_compare
+lexicographical_compare_3way
+list
+logical_and
+logical_not
+logical_or
+lower_bound
+make_heap
+make_pair
+map
+max
+max_element
+mem_fun1_ref_t
+mem_fun1_t
+mem_fun_ref_t
+mem_fun_t
+merge
+min
+min_element
+minus
+mismatch
+modulus
+multimap
+multiplies
+multiset
+negate
+next_permutation
+not_equal_to
+nth_element
+operator
+ostream_iterator
+ostreambuf_iterator
+output_iterator
+output_iterator_tag
+pair
+partial_sort
+partial_sort_copy
+partial_sum
+partition
+plus
+pointer_to_binary_function
+pointer_to_unary_function
+pop_back
+pop_front
+pop_heap
+power
+prev_permutation
+priority_queue
+project1st
+project2nd
+ptr_fun
+push_back
+push_front
+push_heap
+queue
+random_access_iterator
+random_access_iterator_tag
+random_sample
+random_sample_n
+random_shuffle
+raw_storage_iterator
+release
+remove
+remove_copy
+remove_copy_if
+remove_if
+replace
+replace_copy
+replace_copy_if
+replace_if
+reset
+resize
+return_temporary_buffer
+reverse
+reverse_bidirectional_iterator
+reverse_copy
+reverse_iterator
+rfind
+rope
+rotate
+rotate_copy
+search
+search_n
+select1st
+select2nd
+sequence_buffer
+set
+set_difference
+set_intersection
+set_symmetric_difference
+set_union
+slist
+sort
+sort_heap
+stable_partition
+stable_sort
+stack
+streambuf_type
+substr
+subtractive_rng
+swap
+swap_ranges
+temporary_buffer
+transform
+unary_compose
+unary_function
+unary_negate
+uninitialized_copy
+uninitialized_copy_n
+uninitialized_fill
+uninitialized_fill_n
+unique
+unique_copy
+upper_bound
+value_comp
+value_type
+vector