diff options
37 files changed, 33 insertions, 10519 deletions
diff --git a/.vim/README.csupport b/.vim/README.csupport deleted file mode 100644 index 34cc02c..0000000 --- a/.vim/README.csupport +++ /dev/null @@ -1,185 +0,0 @@ -README for c.vim (Version 5.10) / February 05 2010 - -  *  DESCRIPTION -  *  INSTALLATION -  *  RELEASE NOTES  -  *  FILES -  *  ADDITIONAL TIPS -  *  CREDITS - -================================================================================ -  DESCRIPTION -================================================================================ -C/C++-IDE for Vim/gVim. It is written to considerably speed up writing code in -a consistent style.  This is done by inserting complete statements, idioms, -code snippets, templates, and comments.  Syntax checking, compiling,  running a -program, running indent or code checkers can be done with a keystroke.  There -are many additional hints and options which can improve speed and comfort when -writing C/C++. See the help file csupport.txt for more information. - -================================================================================ -  INSTALLATION -================================================================================ -The subdirectories in the zip archive  cvim.zip  mirror the directory structure -which is needed below the local installation directory $HOME/.vim/ for -LINUX/UNIX ($VIM/vimfiles/ for Windows; find the value of $VIM with ":echo -$VIM" from inside Vim). - -(0) Save the template files in '$HOME/.vim/c-support/templates/Templates' if -    you have changed any of them. - -(1) Copy the zip archive cvim.zip to $HOME/.vim and run - -      unzip cvim.zip - -    If you have already an older version of bash-support and you have modified -    the template files you may want to save your templates first and suppress -    overwriting them with - -      unzip cvim.zip  -x *Templates *.template - -(2) Loading of plugin files must be enabled. If not use - -      :filetype plugin on - -    This is the minimal content of the file '$HOME/.vimrc'. Create one if there -    is none.  - -(3) Set at least some personal details in the file  -    '$HOME/.vim/c-support/templates/Templates'  -    (file '$VIM\c-support/templates/Templates' under Windows).  Here is the -    minimal personalization (my settings as an example): - -      |AUTHOR|    = Dr. Fritz Mehner  -      |AUTHORREF| = fgm -      |EMAIL|     = mehner@fh-swf.de -      |COMPANY|   = FH Südwestfalen, Iserlohn -      |COPYRIGHT| = Copyright (c) |YEAR|, |AUTHOR| - -    (Read more about the template system in the plugin documentation) - -(4) Consider additional settings in the file '$HOME/.vimrc'. -    The files customization.vimrc and customization.gvimrc are replacements or  -    extensions for your .vimrc and .gvimrc ( _vimrc and _gvimrc under Windows). -    You may want to use parts of them. The files are documented.  - -There are a lot of features and options which can be used and influenced: - -  *  use of template files and tags -  *  surround marked blocks with statements -  *  using and managing personal code snippets -  *  generate/remove multiline comments  -  *  picking up prototypes -  *  C/C++ dictionaries for keyword completion -  *  (re)moving the root menu - -Restart gVim/Vim generate the help tags   - -  :helptags ~/.vim/doc - -and look at csupport help with - -  :help csupport  - -or use the 'help' item in the root menu of this plug-in. - -             +-----------------------------------------------+ -             | +-------------------------------------------+ | -             | |    ** PLEASE READ THE DOCUMENTATION **    | | -             | |    Actions differ for different modes!    | | -             | +-------------------------------------------+ | -             +-----------------------------------------------+ - -Any problems ? See the TROUBLESHOOTING section at the end of the help file -'doc/csupport.txt'. - -================================================================================ -  RELEASE NOTES FOR VERSION 5.10 -================================================================================ -- The plugin now handles different template styles without editing and -  reloading the main template file. -- The number of template styles is not limited.  -- New hotkey and ex-command to switch template styles. -- Template styles can automatically be related to file extensions. -- indent(1) errors will be presented in a quickfix error window. -- Comment alignment improved. -- Minor improvements. - -  OLDER RELEASE NOTES : see file 'ChangeLog' - -================================================================================ -  FILES -================================================================================ - -README.csupport                This file. - -doc/csupport.txt               The help file for the local on-line help.  -                           -ftplugin/c.vim                 A file type plug-in. Define hotkeys, creates a -                               local dictionary for each C/C++ file. - -plugin/c.vim                   The C/C++ plug-in for GVIM. - -c-support/scripts/wrapper.sh   The wrapper script for the use of a xterm. -c-support/templates/*          C-style and C++-style template files  -                               (see csupport.txt on how to adapt the templates). - - -c-support/wordlists/c-c++-keywords.list All C and C++ keywords (also in word.list). -c-support/wordlists/k+r.list            K&R-Book: Words from the table of content. -                                        They appear frequently in comments. -c-support/wordlists/stl_index.list      STL: method and type names. - - ---------------------------   --------------------------------------------------- -                             The following files and extensions are for -                             convenience only.  c.vim will work without them. -                             --------------------------------------------------- -c-support/doc/c-hotkeys.pdf  Hotkey reference card. -c-support/doc/ChangeLog      The change log. - -rc/customization.ctags       Additional settings I use in  .ctags to enable -                             navigation through makefiles ans qmake files with -                             the plug-in taglist.vim. - -rc/customization.gvimrc      Additional settings I use in .gvimrc : -                             hot keys, mouse settings, ...  The file is -                             commented. Append it to your .gvimrc if you like. - -rc/customization.indent.pro  Additional settings I use in .indent.pro : -                             See the indent manual. - -rc/customization.vimrc       Additional settings I use in .vimrc :  incremental -                             search, tabstop, hot keys, font, use of -                             dictionaries, ...  The file is commented. Append -                             it to your .vimrc if you like. - -================================================================================ -  CREDITS -================================================================================ - -  Some ideas are taken from the following documents: - -  1. Recommended C Style and Coding Standards (Indian Hill Style Guide) -      www.doc.ic.ac.uk/lab/secondyear/cstyle/cstyle.html -  2. Programming in C++, Ellemtel Telecommunication Systems Laboratories -      www.it.bton.ac.uk/burks/burks/language/cpp/cppstyle/ellhome.htm -  3. C++ Coding Standard, Todd Hoff -     www.possibility.com/Cpp/CppCodingStandard.html - -  The splint error format is taken from the file splint.vim (Vim standard -  distribution).   - ------------------- - -  ... finally - -Johann Wolfgang von Goethe (1749-1832), the greatest of the German poets, -about LINUX, Vim/gVim and other great tools (Ok, almost.) : - - Ein Mann, der recht zu wirken denkt,     Who on efficient work is bent,  - Muß auf das beste Werkzeug halten.       Must choose the fittest instrument. - -Faust, Teil 1, Vorspiel auf dem Theater  Faust, Part 1, Prologue for the Theatre - -================================================================================ diff --git a/.vim/c-support/codesnippets/Makefile b/.vim/c-support/codesnippets/Makefile deleted file mode 100644 index 4b02b54..0000000 --- a/.vim/c-support/codesnippets/Makefile +++ /dev/null @@ -1,204 +0,0 @@ -#=============================================================================== -# -#     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 deleted file mode 100644 index 75da8dd..0000000 --- a/.vim/c-support/codesnippets/Makefile.multi-target.template +++ /dev/null @@ -1,70 +0,0 @@ -#=============================================================================== -# -#         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 deleted file mode 100644 index ec71658..0000000 --- a/.vim/c-support/codesnippets/calloc_double_matrix.c +++ /dev/null @@ -1,36 +0,0 @@ - -/*  - * ===  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 deleted file mode 100644 index e21215b..0000000 --- a/.vim/c-support/codesnippets/calloc_int_matrix.c +++ /dev/null @@ -1,35 +0,0 @@ - -/*  - * ===  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 deleted file mode 100644 index 770f5d5..0000000 --- a/.vim/c-support/codesnippets/main.c +++ /dev/null @@ -1,20 +0,0 @@ -#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 deleted file mode 100644 index f3060ef..0000000 --- a/.vim/c-support/codesnippets/main.cc +++ /dev/null @@ -1,19 +0,0 @@ -#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 deleted file mode 100644 index 52c43d3..0000000 --- a/.vim/c-support/codesnippets/print_array.cc.noindent +++ /dev/null @@ -1,29 +0,0 @@ - -// ===  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 deleted file mode 100644 index c6bea02..0000000 --- a/.vim/c-support/codesnippets/print_double_array.c.noindent +++ /dev/null @@ -1,34 +0,0 @@ - -/*  - * ===  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 deleted file mode 100644 index fc32043..0000000 --- a/.vim/c-support/codesnippets/print_int_array.c.noindent +++ /dev/null @@ -1,34 +0,0 @@ - -/*  - * ===  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 deleted file mode 100644 index 25176da..0000000 --- a/.vim/c-support/doc/ChangeLog +++ /dev/null @@ -1,398 +0,0 @@ -================================================================================ -  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 Binary files differdeleted file mode 100644 index 2ac88bc..0000000 --- a/.vim/c-support/doc/c-hotkeys.pdf +++ /dev/null diff --git a/.vim/c-support/doc/c-hotkeys.tex b/.vim/c-support/doc/c-hotkeys.tex deleted file mode 100644 index d8dc844..0000000 --- a/.vim/c-support/doc/c-hotkeys.tex +++ /dev/null @@ -1,366 +0,0 @@ -%%===================================================================================== -%% -%%         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 deleted file mode 100644 index 323cbbc..0000000 --- a/.vim/c-support/rc/customization.ctags +++ /dev/null @@ -1,8 +0,0 @@ - ---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 deleted file mode 100644 index 31befe7..0000000 --- a/.vim/c-support/rc/customization.gvimrc +++ /dev/null @@ -1,57 +0,0 @@ -"=================================================================================== -"         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 deleted file mode 100644 index 95f6081..0000000 --- a/.vim/c-support/rc/customization.indent.pro +++ /dev/null @@ -1,8 +0,0 @@ ---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 deleted file mode 100644 index 917018a..0000000 --- a/.vim/c-support/rc/customization.vimrc +++ /dev/null @@ -1,222 +0,0 @@ -"=================================================================================== -"         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 deleted file mode 100755 index f78861c..0000000 --- a/.vim/c-support/scripts/wrapper.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/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 deleted file mode 100644 index 5841481..0000000 --- a/.vim/c-support/templates/Templates +++ /dev/null @@ -1,30 +0,0 @@ -$ -$ ============================================================= -$ ========== 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 deleted file mode 100644 index a500103..0000000 --- a/.vim/c-support/templates/c.comments.template +++ /dev/null @@ -1,160 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -== 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 deleted file mode 100644 index 97b9082..0000000 --- a/.vim/c-support/templates/c.cpp.template +++ /dev/null @@ -1,487 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -$ -== 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 deleted file mode 100644 index 4565fab..0000000 --- a/.vim/c-support/templates/c.idioms.template +++ /dev/null @@ -1,133 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -== 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 deleted file mode 100644 index f3aa127..0000000 --- a/.vim/c-support/templates/c.preprocessor.template +++ /dev/null @@ -1,49 +0,0 @@ -$------------------------------------------------------------------------- -== 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 deleted file mode 100644 index 574366d..0000000 --- a/.vim/c-support/templates/c.statements.template +++ /dev/null @@ -1,69 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -== 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 deleted file mode 100644 index b91ed44..0000000 --- a/.vim/c-support/templates/cpp.comments.template +++ /dev/null @@ -1,168 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -== 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 deleted file mode 100644 index 6bdbe8b..0000000 --- a/.vim/c-support/templates/cpp.cpp.template +++ /dev/null @@ -1,450 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -$ -== 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 deleted file mode 100644 index fa09ba8..0000000 --- a/.vim/c-support/templates/cpp.idioms.template +++ /dev/null @@ -1,109 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -== 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 deleted file mode 100644 index 68de87f..0000000 --- a/.vim/c-support/templates/cpp.preprocessor.template +++ /dev/null @@ -1,50 +0,0 @@ -$------------------------------------------------------------------------- -== 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 deleted file mode 100644 index c2fdecb..0000000 --- a/.vim/c-support/templates/cpp.statements.template +++ /dev/null @@ -1,72 +0,0 @@ -$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -== 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 deleted file mode 100644 index 5a97dd6..0000000 --- a/.vim/c-support/wordlists/c-c++-keywords.list +++ /dev/null @@ -1,209 +0,0 @@ -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 deleted file mode 100644 index 805756a..0000000 --- a/.vim/c-support/wordlists/k+r.list +++ /dev/null @@ -1,108 +0,0 @@ -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 deleted file mode 100644 index b5d98a3..0000000 --- a/.vim/c-support/wordlists/stl_index.list +++ /dev/null @@ -1,202 +0,0 @@ -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 diff --git a/.vim/doc/csupport.txt b/.vim/doc/csupport.txt deleted file mode 100644 index 615279e..0000000 --- a/.vim/doc/csupport.txt +++ /dev/null @@ -1,2152 +0,0 @@ -*csupport.txt*                  C/C++ Support               February 05 2010 - -C/C++ Support                                           *c-support* *csupport* -                             Plugin version 5.10 -                        for Vim version 7.0 and above -                       Fritz Mehner  <mehner@fh-swf.de> - -C/C++-IDE for Vim/gVim. It is written to considerably speed up writing code in -a consistent style.  This is done by inserting complete statements,idioms, -code snippets, templates, and comments.  Syntax checking, compiling,  running -a program, running a code checker or a reformatter can be done with a -keystroke. - - 1.    Usage                                    |csupport-usage-gvim| - 1.1    Menu 'Comments'                         |csupport-comm| - 1.1.1   Append aligned comments                |csupport-comm-aligned| - 1.1.2   Adjust end-of-line comments            |csupport-comm-realign| - 1.1.3   Code to comment                        |csupport-code-to-comm| - 1.1.4   Comment to code                        |csupport-comm-to-code| - 1.1.5   Frame comments, file header, ...       |csupport-comm-frame| - 1.1.6   File section comments         ..       |csupport-comm-sections| - 1.1.7   Keyword comment, special comment       |csupport-comm-keyword| - 1.1.8   Tags (plugin)                          |csupport-comm-tags| - 1.1.9   Date and date+time                     |csupport-comm-date| - 1.1.10  C to C++ comments and vice versa       |csupport-comm-c-cpp| - 1.2    Menu 'Statements'                       |csupport-stat| - 1.2.1   Normal mode, insert mode.              |csupport-stat-normal-mode| - 1.2.2   Visual mode.                           |csupport-stat-visual-mode| - 1.3    Menu 'Preprocessor'                     |csupport-prep| - 1.3.1   Normal mode, insert mode.              |csupport-prep-normal-mode| - 1.3.2   Visual mode.                           |csupport-prep-visual-mode| - 1.3.3   Block out code with #if 0 .. #endif    |csupport-prep-if0| - 1.3.4   Ex-commands                            |csupport-prep-ex| - 1.4    Menu 'Idioms'                           |csupport-idioms| - 1.4.1   Item 'function'                        |csupport-idioms-function| - 1.4.2   for-loop control                       |csupport-idioms-for-loop| - 1.4.3   Item 'open input file'                 |csupport-idioms-input| - 1.4.4   Item 'open output file'                |csupport-idioms-output| - 1.5    Menu 'Snippets'                         |csupport-snippets| - 1.5.1   Code snippets                          |csupport-snippets| - 1.5.2   Picking up prototypes                  |csupport-proto| - 1.5.3   Code templates                         |csupport-templates-menu| - 1.6    Menu 'C++'                              |csupport-c++| - 1.6.1   Normal mode, insert mode.              |csupport-c++-normal-mode| - 1.6.2   Visual mode.                           |csupport-c++-visual-mode| - 1.6.3   Method implementation                  |csupport-c++-method-impl| - 1.6.4  Ex commands                             |csupport-c++-ex| - 1.7    Menu 'Run'                              |csupport-run| - 1.7.1   Minimal make functionality             |csupport-run-buffer| - 1.7.2   Command line arguments                 |csupport-run-cmdline-args| - 1.7.3   Run make                               |csupport-run-make| - 1.7.4   Command line arguments for make        |csupport-run-make-args| - 1.7.5   Splint                                 |csupport-run-splint| - 1.7.6   CodeCheck                              |csupport-run-codecheck| - 1.7.7   Indent                                 |csupport-run-indent| - 1.7.8   Hardcopy                               |csupport-run-hardcopy| - 1.7.9   Rebuild templates                      |csupport-run-templates| - 1.7.10  Xterm size                             |csupport-run-xterm| - 1.7.11  Output redirection                     |csupport-run-output| - 1.8    Help                                    |csupport-help| -  - 2.    Usage without GUI                        |csupport-usage-vim| - 3.    Hotkeys                                  |csupport-hotkeys| - 4.    Customization and configuration          |csupport-custom| - 4.1    Global variables                        |csupport-custom-glob-vars| - 4.2    The root menu                           |csupport-custom-root-menu| - 4.3     System-wide installation               |csupport-system-wide| - 5.    Template files and tags                  |csupport-templates| - 5.1    Template files                          |csupport-templates-files| - 5.2    Macros                                  |csupport-templates-macros| - 5.2.1  User defined formats for date and time  |csupport-templates-date| - 5.3    Templates                               |csupport-templates-names| - 5.3.1  Template names                          |csupport-templates-names| - 5.3.2  Template definition                     |csupport-templates-definition| - 5.3.3  Template expansion                      |csupport-templates-expansion| - 5.3.4  The macros <+text+> etc.                |csupport-templates-jump| - 5.3.5  Command Ctrl-j                          |csupport-Ctrl-j| - 5.4    Switching between template sets         |csupport-templates-sets| - 5.5    Binding a style to a file extension     |csupport-templates-bind| - 6.    C/C++ Dictionaries                       |csupport-dictionary| - 7.    Extend ctags                             |csupport-ctags| - 7.1   Make and qmake                           |csupport-ctags-make| - 7.2   Templates                                |csupport-ctags-templates| - 8.    Folding                                  |csupport-folding| - 9     Additional Mappings                      |csupport-ad-mappings| - 10.   Windows particularities                  |csupport-windows| - 11.   Additional tips                          |csupport-tips| - 12.   Troubleshooting                          |csupport-troubleshooting| - 13.   Release Notes /Change Log                |csupport-release-notes| - -      How to add this help file to Vim's help  |add-local-help| - - -============================================================================== -1.  USAGE WITH GUI  (gVim)                               *csupport-usage-gvim* -============================================================================== - -If the root menu 'C/C++' is not visible call it with the item "Load C Support" -from the standard Tools-menu. -The item "Load C Support" can also be used to unload the C/C++-root menu. - -Nearly all menu entries insert code snippets or comments. All these stuff is -taken from template files and can be changed by the user to meet his -requirements (see|csupport-templates|). - ------------------------------------------------------------------------------- -1.1  MENU 'Comments'                                           *csupport-comm* ------------------------------------------------------------------------------- - -1.1.1  APPEND ALIGNED COMMENTS TO CONSECUTIVE LINES    *csupport-comm-aligned* - -In NORMAL MODE the menu items 'end-of-line comment' will append an comment to -the current line. -In VISUAL MODE these item will append aligned comments to all marked lines. -Marking the first 4 lines - -  print_double_array ( double array[], -                       int    n, -                       int    columns, -                       char*  arrayname -                       ) - -and choosing 'end-of-line com. /**/' will yield. - -  print_double_array ( double array[],          /*  */ -                       int    n,                /*  */ -                       int    columns,          /*  */ -                       char*  arrayname         /*  */ -                       )                        /*  */ - -If one ore more lines go beyond the starting column (s.below) the comments -will start at the 2. column after the longest line.  The cursor will be -positioned inside the first comment. - -The default starting column is 49 ( = (multiple of 2,4, or 8) + 1 ).  This can -be changed by setting a global variable in the file ~/.vimrc , e.g. : - -  let g:C_LineEndCommColDefault    = 45 - -The starting column can also be set by the menu item -'Comments->set end-of-line com. col' . Just position the cursor in an -arbitrary column (column number is shown in the Vim status line) and choose -this menu item.  This setting is buffer related. - -If the cursor was at the end of a line you will be asked for a column number -because this position is most likely not the desired starting column. -Your choice will be confirmed. - ------------------------------------------------------------------------------- - -1.1.2  ADJUST END-OF-LINE COMMENTS                    *csupport-comm-realign* - -After some changes end-of-line comments may be no longer aligned: - -  print_double_array ( double       array[],          /*  */ -                       long int     n,                     /*  */ -                       unsigned int columns,          /*  */ -                       char*        a_name         /*  */ -                       )                        /*  */ - -Realignment can be achieved with the menu item 'adjust end-of-line com.' In -normal mode the comment (if any) in the current line will be aligned to the -end-of-line comment column (see above) if possible. In visual mode the -comments in the marked block will be aligned: - -  print_double_array ( double       array[],    /*  */ -                       long int     n,          /*  */ -                       unsigned int columns,    /*  */ -                       char*        a_name      /*  */ -                       )                        /*  */ - -The realignment will not be done for comments with nothing else than leading -whitespaces. These comments are usually captions: - -  max = other.max;                    /* the maximum value */ -  len = other.len;                         /* the length        */ -  /* ===== the next section ===== */ -  pos = (x+y+z)/3.0;             /* the next position */ - -After the alignment we have: - -  max = other.max;                              /* the maximum value */ -  len = other.len;                              /* the length        */ -  /* ===== the next section ===== */ -  pos = (x+y+z)/3.0;                            /* the next position */ - ------------------------------------------------------------------------------- - -1.1.3  CODE TO COMMENT                                 *csupport-code-to-comm* - -The marked block - -xxxxxxxx -xxxxxxxx -xxxxxxxx - -will be changed by the menu item 'code->comment /**/' into the multiline -comment (all (partially) marked lines): - -/* xxxxxxxx - * xxxxxxxx - * xxxxxxxx - */ - -The marked block will be changed  by the menu item 'code->comment //' into the -multiline comment - -//xxxxxxxx -//xxxxxxxx -//xxxxxxxx - -The menu items works also for a single line. A single line needs not to be -marked. - ------------------------------------------------------------------------------- - -1.1.4  COMMENT TO CODE                                 *csupport-comm-to-code* - -If one (or more) complete comment (i.e. all lines belonging to the comment) is -marked the item 'comment->code' will uncomment it.  If the following lines -are marked - -   * printf ("\n"); -   */ - -  printf ("\n"); - -  //  printf ("\n"); -  // - -  /* -   *  printf ("\n"); -   */ - -uncommenting will yield - -   * printf ("\n"); -   */ - -  printf ("\n"); - -  printf ("\n"); - - - -  printf ("\n"); - -The first 2 lines are only a part of a C-comment and remain unchanged. -A C-comment can start with /* , /** or /*! . - -The menu item works also for a single line with a leading // . A single line -needs not to be marked. - ------------------------------------------------------------------------------- - -1.1.5  FRAME COMMENTS, FILE HEADER, ...                  *csupport-comm-frame* - -Frame comments, file header comments and function, methods, class descriptions -are read as templates from the appropriate files (see |csupport-templates|). - -There are to file description templates (menu items 'file description (impl.)' -and  'file description (header)', see also |csupport-templates|): - -  comment.file-description         : files *.c *.cc *.cp *.cxx *.cpp *.CPP *.c++ -                                      *.C *.i *.ii  - -  comment.file-description-header  : everything else with filetype 'c' or 'cpp' - -The appropriate template will also be included into a new file. The plugin  -decides on the basis of the file extension. The default is shown above. You -can change the list by setting a global variable in '~/.vimrc': - -  au BufRead,BufNewFile  *.XYZ  set filetype=c - -  let g:C_SourceCodeExtensions  = 'XYZ c cc cp cxx cpp CPP c++ C i ii' - -A new file named 'test.XYZ' will now be considered a C implementation file.  - ------------------------------------------------------------------------------- - -1.1.6  FILE SECTION COMMENTS                          *csupport-comm-sections* - -File section comments can be uses to separate typical C- and H-file sections -with comments of similar appearance, e.g. - -/* #####   HEADER FILE INCLUDES   ################################################### */ - -/* #####   MACROS  -  LOCAL TO THIS SOURCE FILE   ################################### */ - -/* #####   TYPE DEFINITIONS  -  LOCAL TO THIS SOURCE FILE   ######################### */ - -These section comments can also be inserted using the hotkey \ccs for C/C++ -files, or \chs for H-files. These hotkeys will start the command -'CFileSection' or 'HFileSection'  on the command line: - - :CFileSection  - :HFileSection  - -Now type a <Tab> to start the selection menu to choose from. - ------------------------------------------------------------------------------- - -1.1.7  KEYWORD COMMENT, SPECIAL COMMENT                *csupport-comm-keyword* - -Keword comments are end-of-line comments: - - /* :<keyword>:<date+time>:<author reference>: <arbitrary comment text> */ - -Keywords are  - - BUG COMPILER TODO TRICKY WARNING WORKAROUND user-defined-keyword - -These are preliminary comments to document places where works will be resumed -shortly. They are usually not meant for the final documentation.  These -comments are easily found by searching for the keyword. -The keyword comments can also be inserted using the hotkey \ckc . This hotkey -starts the command 'KeywordComment' on the command line: - - :KeywordComment - -Now type a <Tab> to start the selection menu to choose from. - -Special comments are occasionally used to mark special features of a code -construct (e.g. a fall through cases in a switch statement, an empty loop): - - /* EMPTY */ - /* NOT REACHED */ - /* REMAINS TO BE IMPLEMENTED */ -  .... - -The special comments can also be inserted using the hotkey \csc . This hotkey -starts the command 'SpecialComment' on the command line: - - :SpecialComment - -Now type a <Tab> to start the selection menu to choose from. - ------------------------------------------------------------------------------- - -1.1.8  TAGS (PLUGIN)                                      *csupport-comm-tags* - -The submenu 'tags (plugin)' let you insert the predefined macros from the -template system (see|csupport-templates-macros|). In visual mode the marked -string will be replaced by the macro. - ------------------------------------------------------------------------------- - -1.1.9  DATE AND DATE+TIME                                 *csupport-comm-date* - -The format for 'date' and 'date time' can be defined by the user (see -|csupport-templates-date|). In visual mode the marked string will be replaced -by the macro (e.g. to update date and time). - ------------------------------------------------------------------------------- - -1.1.10 C TO C++ COMMENTS AND VICE VERSA                  *csupport-comm-c-cpp* - -The menu item '// xxx -> /* xxx */' changes a C++ comment into an C comment. -This is done for the current line in normal or insert mode and for a marked -area of lines in visual mode. -If there are multiple C comments only the first one will be changed: -  printf ("\n");                     /* one */ /* two */ /* three */ -will be changed into -  printf ("\n");                     // one  /* two */ /* three */ - -The menu item '/* xxx */ -> // xxx' changes a C comment into an C++ comment. - ------------------------------------------------------------------------------- -1.2  MENU 'Statements'                                         *csupport-stat* ------------------------------------------------------------------------------- - -1.2.1  NORMAL MODE, INSERT MODE.                   *csupport-stat-normal-mode* - -An empty statement will be inserted and properly indented. The item 'if{}' -will insert an if-statement: - -if (  ) -{ -} - - -1.2.2  VISUAL MODE.                                *csupport-stat-visual-mode* - -STATEMENTS WITH BLOCKS AND CASE LABEL. --------------------------------------- -The highlighted area - -xxxxx -xxxxx - -can be surrounded by one of the following statements: - -  +----------------------------+-----------------------------+ -  |     if (  )                |     if (  )                 | -  |     {                      |     {                       | -  |       xxxxx                |       xxxxx                 | -  |       xxxxx                |       xxxxx                 | -  |     }                      |     }                       | -  |                            |     else                    | -  |                            |     {                       | -  |                            |     }                       | -  +----------------------------+-----------------------------+ -  |     for ( ; ;  )           |     while (  )              | -  |     {                      |     {                       | -  |       xxxxx                |       xxxxx                 | -  |       xxxxx                |       xxxxx                 | -  |     }                      |     }                       | -  +----------------------------+-----------------------------+ -  |     do                     |                             | -  |     {                      |     {                       | -  |       xxxxx                |       xxxxx                 | -  |       xxxxx                |       xxxxx                 | -  |     }                      |     }                       | -  |     while (  );            |                             | -  +----------------------------+-----------------------------+ -  |      switch (  ) {                                       | -  |      case :                                              | -  |       break;                                             | -  |                                                          | -  |      case :                                              | -  |       break;                                             | -  |                                                          | -  |      case :                                              | -  |       break;                                             | -  |                                                          | -  |      case :                                              | -  |       break;                                             | -  |                                                          | -  |      default:                                            | -  |       break;                                             | -  |      }                                                   | -  +----------------------------+-----------------------------+ - -The whole statement will be indented after insertion. - - -STATEMENTS WITHOUT BLOCKS. --------------------------- -One of the following statements can be inserted: - -  +-------------------------------+--------------------------+ -  |    if (  )                    |    for ( ; ;  )          | -  +-------------------------------+--------------------------+ -  |    if (  )                    |    while (  )            | -  |    else                       |                          | -  +-------------------------------+--------------------------+ -  |    case :                     |                          | -  |      break;                   |                          | -  +-------------------------------+--------------------------+ - - ------------------------------------------------------------------------------- -1.3  MENU 'Preprocessor'                                       *csupport-prep* ------------------------------------------------------------------------------- - -1.3.1  NORMAL MODE, INSERT MODE.                   *csupport-prep-normal-mode* - -The preprocessor statements will be inserted and properly indented. - -1.3.2  VISUAL MODE.                                *csupport-prep-visual-mode* - -STATEMENTS WITH BLOCKS ----------------------- -The highlighted area - -xxxxx -xxxxx - -can be surrounded by one of the following statements: - -  +----------------------------+-----------------------------+ -  |    #if  CONDITION                                        | -  |    xxxxx                                                 | -  |    xxxxx                                                 | -  |    #else      /* ----- #if CONDITION  ----- */           | -  |                                                          | -  |    #endif     /* ----- #if CONDITION  ----- */           | -  +----------------------------------------------------------+ -  |    #ifdef  CONDITION                                     | -  |    xxxxx                                                 | -  |    xxxxx                                                 | -  |    #else      /* ----- #ifdef CONDITION  ----- */        | -  |                                                          | -  |    #endif     /* ----- #ifdef CONDITION  ----- */        | -  +----------------------------------------------------------+ -  |    #ifndef  CONDITION                                    | -  |    xxxxx                                                 | -  |    xxxxx                                                 | -  |    #else      /* ----- #ifndef CONDITION  ----- */       | -  |                                                          | -  |    #endif     /* ----- #ifndef CONDITION  ----- */       | -  +----------------------------------------------------------+ -  |    #ifndef  INC_TEST                                     | -  |    #define  INC_TEST                                     | -  |    xxxxx                                                 | -  |    xxxxx                                                 | -  |    #endif   /* ----- #ifndef INC_TEST  ----- */          | -  +----------------------------------------------------------+ -  |    #if  0     /* ----- #if 0 : If0Label_1 ----- */       | -  |                                                          | -  |    #endif     /* ----- #if 0 : If0Label_1 ----- */       | -  +----------------------------------------------------------+ - -The macro name for an include guard (e.g. INC_TEST above) will be derived as a -suggestion from the file name. - -1.3.3  BLOCK OUT CODE WITH #if 0 ... #endif                *csupport-prep-if0* - -The menu item #if 0 #endif  inserts the lines - -  #if  0     /* ----- #if 0 : If0Label_1 ----- */ - -  #endif     /* ----- #if 0 : If0Label_1 ----- */ - -In visual mode the marked block of lines will be surrounded by these lines. - -This is usually done to temporarily block out some code.  The label names like -If0Label_1 are automatically inserted into the comments.  The trailing numbers -are automatically incremented.  These numbers can be changed by the user.  The -next number will be one above the highest number found in the current buffer. - -A corresponding label can be found by searching with the vim star command (*). -All labels can be found with a global search like :g/If0Label_/ or -:g/If0Label_\d\+/. All corresponding lines can be deleted with :g/If0Label_/d . - - -REMOVE THE ENCLOSING #if 0 ... #endif -CONSTRUCT. - -The menu item 'remove #if #endif' removes such a construct if the cursor is -in the middle of such a section or on one of the two enclosing lines. Nested -constructs will be untouched. - -1.3.4  EX-COMMANDS                                          *csupport-prep-ex* - -There are 4 additional Ex command which can be used to insert include -statements: - - Ex command             hotkey     includes - ------------------------------------------------------------------------- - :IncludeStdLibrary     \ps        C standard library - :IncludeC99Library     \pc        C99 library - :IncludeCppLibrary     \+ps       C++ standard library - :IncludeCppCLibrary    \+pc       C standard library ( #include <c...> ) - -Type :Inc<Tab> and choose one of the commands. Now type an additional space -and a <Tab> to show the whole list list or type a space and a few leading -characters to reduce this list. - ------------------------------------------------------------------------------- -1.4  MENU 'Idioms'                                           *csupport-idioms* ------------------------------------------------------------------------------- - -1.4.1  Item 'function'                              *csupport-idioms-function* - -NORMAL MODE, INSERT MODE: -The name of the function is asked for and the following lines (for function -name "f") will be inserted: - -  void -  f (  ) -  { -    return ; -  }        /* ----------  end of function f  ---------- */ - -VISUAL MODE: -Main or [static] function: the highlighted lines will go inside the new -function or main. -for-loops: the highlighted lines will be set in braces. - -1.4.2  for-loop control                             *csupport-idioms-for-loop* - -The menu items 'for( x=0; ... )' and 'for( x=n-1; ... )' can be used to write -the control statement for a for-loop counting upward or downward. These items -start an input dialog - - [TYPE (expand)] VARIABLE [START [END [INCR.]]] : - -asking for at least the name of the loop variable. The other parameters are -optional. The type is restricted to the following integral data types: - -   char -   int -   long int -   long -   short int -   short -   size_t -   unsigned char -   unsigned int -   unsigned long int -   unsigned long -   unsigned short int -   unsigned short -   unsigned - -One of these types can be specified by typing it completely or by typing zero -or more characters of its name and completing them to the full name by using -the tab key (tab completion). If the start of the type name is ambiguous (e.g. -'uns') a list of completion candidates is provided to choose from. - -1.4.3  Item 'open input file'                          *csupport-idioms-input* - -The item 'open input file' will create the statements to open and close an -input file (e.g. with the file pointer 'infile'). - -1.4.4  Item 'open output file'                        *csupport-idioms-output* - -The item 'open output file' will create the statements to open and close an -output file (e.g. with the file pointer 'outfile'). - ------------------------------------------------------------------------------- -1.5  MENU 'Snippets'                                       *csupport-snippets* ------------------------------------------------------------------------------- - -1.5.1  CODE SNIPPETS - -Code snippets are pieces of code which are kept in separate files in a special -directory (e.g. a few lines of code or a complete template for a Makefile). -File names are used to identify the snippets.  The snippet directory will be -created during the installation  ( $HOME/.vim/codesnippets-c is the default). -Snippets are managed with the 3 items - -   C/C++ -> Snippets -> read  code snippet -   C/C++ -> Snippets -> write code snippet -   C/C++ -> Snippets -> edit  code snippet - -from the Snippets submenu. - -CREATING A NEW SNIPPET -When nothing is marked, "write code snippet" will write the whole buffer -to a snippet file, otherwise the marked area will be written to a file. - -INSERT A SNIPPET -Select the appropriate file from the snippet directory ("read  code snippet"). -The inserted lines will be indented. - -EDIT A SNIPPET -This is a normal edit. - -INDENTATION / NO INDENTATION -Code snippets are normally indented after insertion. To suppress indentation -add the file extension "ni" or "noindent" to the snippet file name, e.g. - -  parameter_handling.c.noindent - -Snippet browser ---------------- -Under a GUI a file requester will be put up. Without GUI the filename will be -read from the command line. You can change this behavior by setting a global -variable in your ~/.vimrc : - - let g:C_GuiSnippetBrowser = 'commandline' - -The default value is 'gui'.  - - -1.5.2   PICKING UP PROTOTYPES                                 *csupport-proto* - -PICK UP PROTOTYPES. -To make a prototype from a function head mark the function head and choose -'Snippets -> pick up prototype'. From the first six lines of - -   void -  print_double_array (  double array[],  /* array to print                */ -                        int    n,        /* number of elements to print   */ -                        int    columns,  /* number of elements per column */ -                        char*  arrayname /* array name                    */ -                        ) -  { -    ... -  }       /* ----------  end of function print_double_array  ---------- */ - -the prototype - -  void print_double_array ( double array[], int n, int columns, char* arrayname ); - -is produced and put in an internal buffer. -- Leading and trailing whitespaces are removed. -- All inner whitespaces are squeezed. -- All comments will be discarded. -- Trailing parts of the function body (e.g a '{' ) will also be removed. -- The class name and the scope resolution operator will be removed (C++ method -  implementations). -Further prototypes can be picked up and gathered in the buffer. - -For C++ methods namespace names and class names will be removed -(exception: 'std::' ). The first two lines of - -  std::string -  ROBOT::Robot::get_name  ( void ) -  { -    return type_name; -  }   /* -----  end of method Robot::get_name  ----- */ - -result in the prototype - -  std::string get_name ( void ); - -Folding may help picking up prototypes (see |csupport-folding|). - - -INSERT PROTOTYPES -With 'Snippets -> insert prototype(s)' all picked up prototypes currently in -the buffer will be inserted below the cursor. -The prototype buffer will be cleared after insertion. - - -DISCARD PROTOTYPES -The prototype buffer can be cleared with 'Snippets -> clear prototype(s)' . - - -SHOW PROTOTYPES -The list of gathered prototypes can be shown with -'Snippets -> show prototype(s)'. The number and the filename are shown, e.g. - -  (1) matrix.c #  double** calloc_double_matrix ( int rows, int columns ); -  (2) matrix.c #  void free_double_matrix ( double **m ); -  (3) foomain.c #  void foo ( ); - - -REMARK. Generating prototypes this way is nice in a small project. You may -want to use an extractor like cextract or something else. - - -1.5.3  Code Templates                                *csupport-templates-menu* ---------------------- -Nearly all menu entries insert code snippets or comments. All these stuff is -taken from template files and can be changed by the user to meet his -requirements (see|csupport-templates|on how to use the template system). - -The menu item 'edit local templates' opens the main template file in a local -plugin installation. This is usually the file -'~/.vim/c-support/templates/Templates'.  There may be dependent files -loaded from the main file.  Now change whatever file you want, save it, and -click on the menu item 'reread templates' to read in the file(s) and to -rebuild the internal representation of the templates. - -The menu item 'edit global templates' opens the main template file in a -system-wide plugin installation (see |csupport-system-wide|). This is -usually the file '$VIM./vimfiles/c-support/templates/Templates'. - -Template browser ----------------- -Under a GUI a file requester will be put up. Without GUI the filename will be -read from the command line. You can change this behavior by setting a global -variable in your ~/.vimrc : - - let g:C_GuiTemplateBrowser = 'explorer' - -The default value is 'gui'. 'explorer' will start the file explorer -(see help|:Explore|). To use the commandline asign 'commandline'. - ------------------------------------------------------------------------------- -1.6  MENU 'C++'                                                 *csupport-c++* ------------------------------------------------------------------------------- - -1.6.1  NORMAL MODE, INSERT MODE.                    *csupport-c++-normal-mode* - -An empty statement will be inserted and in some cases properly indented. The -item 'try .. catch' will insert the following lines: - -  try { -  } -  catch ( const &ExceptObj ) {    // handle exception: -  } -  catch (...) {   // handle exception: unspecified -  } - -The cursor will go into the try block. - -1.6.2  VISUAL MODE.                                 *csupport-c++-visual-mode* - -The highlighted area can be surrounded by one of the following statements: - -  try - catch -  catch -  catch(...) -  namespace { } -  extern "C" { } - -The whole statement will be indented after insertion. - -1.6.3   METHOD IMPLEMENTATION                       *csupport-c++-method-impl* - -The menu item 'method implement.' asks for a method name. If this item is -called the first time you will see just an scope resolution operator.  If you -specify the scope this is used the next time you call this item.  If you use -one of the menu items to generate a class (see |csupport-templates|) the -scope will be extracted and used for the next method. - -1.6.4  EX COMMANDS                                           *csupport-c++-ex* - -There are 4 additional Ex command which can be used to insert include -statements. Please see |csupport-prep-ex|. - ------------------------------------------------------------------------------- -1.7  MENU 'Run'                                                 *csupport-run* ------------------------------------------------------------------------------- - -1.7.1  MINIMAL MAKE FUNCTIONALITY                        *csupport-run-buffer* - -The 'Run' menu provides a minimal make functionality for single file projects -(e.g. in education) : - -SAVE AND COMPILE -'save and compile' saves the buffer and run the compiler with the given -options (see |csupport-custom-glob-vars|). - -An error window will be opened if the compiler reports errors and/or warnings. -Quickfix commands can now be used to jump to an error location. - -Consider using maps like -  map  <silent> <F7>    <Esc>:cprevious<CR> -  map  <silent> <F8>    <Esc>:cnext<CR> -in your ~/.vimrc file to jump over the error locations and make navigation -easier.  The error list and the error locations in your source buffer will be -synchronized. - - -LINK -'link' makes an executable from the current buffer. If the buffer is not -saved, or no object is available or the object is older then the source step -'save and compile' is executed first. - -The behavior of the compiler / linker is determined by the options assigned to -the variables described in |csupport-custom-glob-vars| (4.group). - -RUN -'run' runs the executable with the same name (extension .e) as the current -buffer. If the buffer is not saved, or no executable is available or the -executable is older then the source steps 'save and compile' and 'link' are -executed first. - - -1.7.2  COMMAND LINE ARGUMENTS                      *csupport-run-cmdline-args* - -The item 'command line arguments' calls an input dialog which asks for command -line arguments. These arguments are forwarded to the program which is run by -the 'run' item. The arguments are kept until you change them. -For the first and only the first argument file name expansion will work (use -the Tab-key). Only the first string of the input can be expanded due to a -restriction of the Vim input function. To expand two or more filenames -specify them in reverse order: type the first characters of the last filename -and expand them. Go to the start of the input and type the beginning of the -last but one filename and expand it. - -The arguments belong to the current buffer (that is, each buffer can have its -own arguments). -If the buffer gets a new name with "save as" the arguments will now belong to -the buffer with the new name. - -The command line arguments can be followed by pipes and redirections: - -  11 22 | sort -rn | head -10 > out - -Caveat: If you look for the current arguments by calling this menu item again -be sure to leave it with a CR (not Esc !). Due to a limitation of an internal -Vim function CR will keep the arguments, Esc will discard them. - - -1.7.3  RUN make                                            *csupport-run-make* - -The item 'make' runs the external make program. - - -1.7.4  COMMAND LINE ARGUMENTS FOR make                *csupport-run-make-args* - -The item 'command line arguments for make' calls an input dialog which asks -for command line arguments for make. These arguments are forwarded to make -when called by the item 'make'. - - -1.7.5  SPLINT                                            *csupport-run-splint* - -Splint is a tool for statically checking C programs (see http://www.splint.org). -Of course it has to be installed in order to be used within Vim.  The menu -item 'Run->splint' will run the current buffer through splint. - -An error window will be opened if splint has something to complain about. -Quickfix commands can now be used to jump to an error location.  For easier -navigation see tip under 'SAVE AND COMPILE' |csupport-run-buffer|. - -Splint has many options. Presumably the best way is to keep the options in an -option file (~/.splintrc). For a quick try you can use the menu item -'Run->cmd. line arg. for splint' to specify some buffer related options. - -When vim is started this plugin will check whether splint is executable. If -not, the menu item will *NOT' be visible. - - -1.7.6  CODECHECK                                      *csupport-run-codecheck* - -CodeCheck (TM) is a commercial code analyzing tool produced by Abraxas -Software, Inc.  (www.abraxas-software.com). -Of course it has to be installed in order to be used within Vim.  The menu -item 'Run->CodeCheck' will run the current buffer through CodeCheck. - -An error window will be opened if CodeCheck has something to complain about. -Quickfix commands can now be used to jump to an error location.  For easier -navigation see tip under 'SAVE AND COMPILE' |csupport-run-buffer|. - -CodeCheck has many options.  For a quick try you can use the menu item -'Run->cmd. line arg. for CodeCheck' to specify some buffer related options. - -CodeCheck will be run with default options (see |csupport-custom-glob-vars|). -The default options can be overwritten by  placing a global variable in -~/.vimrc , e.g. - -  let  g:C_CodeCheckOptions = "-K13 -Rmeyers" - -The default name for the executable is 'check'.  There are other names in use -on different platforms.  The name can be changed by placing a global variable -in ~/.vimrc , e.g. - -  let  g:C_CodeCheckExeName = "chknt.exe" - -When vim is started this plugin will check whether CodeCheck is executable. If -not, the menu item will *NOT' be visible. - - -1.7.7  INDENT                                            *csupport-run-indent* - -The formatter 'indent' can be run over the whole buffer.  Before formatting a -buffer this buffer will be saved to disk and you will be asked for a -confirmation. - -Indent has many options. These are kept in the file '.indent.pro' in your home -directory. See the indent manual for more information. - - -1.7.8  HARDCOPY                                        *csupport-run-hardcopy* - -Generates a PostScript file from the whole buffer or from a marked region. -On a Windows system a printer dialog is displayed. -The hardcopy goes to the current working directory.  If the buffer contains -documentation or other material from non-writable directories the hardcopy -goes to the HOME directory. The output destination will be shown in a message. - -The print header contains date and time for the current locale. The definition -used is - -  let s:C_Printheader = "%<%f%h%m%<  %=%{strftime('%x %X')}     Page %N" - -The current locale can be overwritten by changing the language, e.g. - -  :language C - -or by setting a global variable in the file ~/.vimrc , e.g. : - -  let g:C_Printheader = "%<%f%h%m%<  %=%{strftime('%x %X')}     SEITE %N" - -See :h printheader and :h strftime()  for more details. - - -1.7.9  REBUILD TEMPLATES                              *csupport-run-templates* - -After editing one or more template files  a click on this item rereads the -template files and rebuilds all templates. - - -1.7.10  XTERM SIZE                                        *csupport-run-xterm* - -The size of the xterm used for  running a program (below) can be set by this -menu item. The default is 80 columns with 24 lines. -This feature is not available under Windows. - - -1.7.11  OUTPUT REDIRECTION                               *csupport-run-output* - -Running a program can be done in one of three ways: -(1) Run the program from the gVim command line. -    This is for interactive programs with little input and output. -(2) Run the program and direct the output into a window with name "C-Output". -    The buffer and its content will disappear when the window is closed and -    reused otherwise. -    This is for non-interactive programs with little to very much output. -    You have unlimited line length, regex search, navigation, ... -    The tabstop value will be set to 8  for "C-Output". -(3) Run the program in an xterm. - -The output method can be chosen from the menu item 'Run->output: ...'. -This menu has three states: - -  output: VIM->buffer->xterm -  output: BUFFER->xterm->vim -  output: XTERM->vim->buffer - -The first (uppercase) item shows the current method.  The default is 'vim'. -This can be changed by setting the variable g:C_OutputGvim to another value. -Possible values are 'vim', 'buffer' and 'xterm' . - -The xterm defaults can be set in ~/.vimrc by the variable g:C_XtermDefaults . -The default is "-fa courier -fs 12 -geometry 80x24" : -  font name     : -fa courier -  font size     : -fs 12 -  terminal size : -geometry 80x24 -See 'xterm -help' for more options. Xterms are not available under Windows. - ------------------------------------------------------------------------------- -1.8  'help'                                                    *csupport-help* ------------------------------------------------------------------------------- -Plugin help ------------ -The root menu item 'help (plugin)' shows this plugin help in a help window. -The help tags must have been generated with -  :helptags ~/.vim/doc -The hotkey is \hp (for "help plugin"). - -Displaying a manual -------------------- -The root menu item 'show manual' shows the manual for the word under the -cursor. If there is more than one manual a selection list will be presented. -If there is no word under the cursor you can type in a name.  An interface to -the on-line reference manuals must be installed (usually man(1) for -Linux/Unix, see|csupport-custom-glob-vars|). -The hotkey is \hm (for "help manual"). - -============================================================================== -2.  USAGE WITHOUT GUI  (Vim)                              *csupport-usage-vim* -============================================================================== - -The frequently used constructs can be inserted with key mappings.  The -mappings are also described in the document c-hot-keys.pdf (reference card, -part of this package). -Hint: Typing speed matters. The combination of a leader ('\') and the -following character(s) will only be recognized for a short time. -The insert mode mappings start with ` (backtick). - -Legend:  (i) insert mode, (n) normal mode, (v) visual mode - -  -- Help --------------------------------------------------------------- - -  \hm       show manual for word under the cursor (n,i) -  \hp       show plugin help                      (n,i) - -  -- Comments ----------------------------------------------------------- - -  \cl       end-of-line comment                 (n,v,i) -  \cj       adjust end-of-line comment(s)       (n,v,i) -  \cs       set end-of-line comment column      (n) -  \c*       code -> comment /* */               (n,v) -  \cc       code -> comment //                  (n,v) -  \co       comment -> code                     (n,v) -  \cfr      frame comment                       (n,i) -  \cfu      function comment                    (n,i) -  \cme      method description                  (n,i) -  \ccl      class description                   (n,i) -  \cfdi     file description (implementation)   (n,i) -  \cfdh     file description (header)           (n,i) -  \ccs      C/C++-file section  (tab. compl.)   (n,i) -  \chs      H-file section      (tab. compl.)   (n,i) -  \ckc      keyword comment     (tab. compl.)   (n,i) -  \csc      special comment     (tab. compl.)   (n,i) -  \cd       date                                (n,v,i) -  \ct       date \& time                        (n,v,i) - -  -- Statements --------------------------------------------------------- - -  \sd       do { } while                        (n,v,i) -  \sf       for                                 (n,i) -  \sfo      for { }                             (n,v,i) -  \si       if                                  (n,i) -  \sif      if { }                              (n,v,i) -  \sie      if else                             (n,v,i) -  \sife     if { } else { }                     (n,v,i) -  \se       else { }                            (n,v,i) -  \sw       while                               (n,i) -  \swh      while { }                           (n,v,i) -  \ss       switch                              (n,v,i) -  \sc       case                                (n,i) -  \s{ \sb   { }                                 (n,v,i) - -  -- Preprocessor ------------------------------------------------------- - -  \ps       choose a standard library include   (n,i) -  \pc       choose a C99 include                (n,i) -  \p<       #include <>                         (n,i) -  \p"       #include ""                         (n,i) -  \pd       #define                             (n,i) -  \pu       #undef                              (n,i) -  \pie      #if  #else #endif                   (n,v,i) -  \pid      #ifdef #else #endif                 (n,v,i) -  \pin      #ifndef #else #endif                (n,v,i) -  \pind     #ifndef #def #endif                 (n,v,i) -  \pi0      #if 0 #endif                        (n,v,i) -  \pr0      remove #if 0 #endif                 (n,i) -  \pe       #error                              (n,i) -  \pl       #line                               (n,i) -  \pp       #pragma                             (n,i) - -  -- Idioms ------------------------------------------------------------- - -  \if       function                            (n,v,i) -  \isf      static function                     (n,v,i) -  \im       main()                              (n,v,i) -  \i0       for( x=0; x<n; x+=1 )               (n,v,i) -  \in       for( x=n-1; x>=0; x-=1 )            (n,v,i) -  \ie       enum   + typedef                    (n,i) -  \is       struct + typedef                    (n,i) -  \iu       union  + typedef                    (n,i) -  \ip       printf()                            (n,i) -  \isc      scanf()                             (n,i) -  \ica      p=calloc()                          (n,i) -  \ima      p=malloc()                          (n,i) -  \isi      sizeof()                            (n,v,i) -  \ias      assert()                            (n,v) -  \ii       open input file                     (n,i) -  \io       open output file                    (n,i) - -  -- Snippets ----------------------------------------------------------- - -  \nr       read code snippet                   (n,i) -  \nw       write code snippet                  (n,v,i) -  \ne       edit code snippet                   (n,i) -  \np       pick up prototype                   (n,v,i) -  \ni       insert prototype(s)                 (n,i) -  \nc       clear  prototype(s)                 (n,i) -  \ns       show   prototype(s)                 (n,i) -  \ntl      edit local templates                (n,i) -  \ntg      edit global templates               (n,i) -  \ntr      rebuild templates                   (n,i) - -  -- C++ ---------------------------------------------------------------- - -  \+co      cout  <<  << endl;                  (n,i) -  \+c       class                               (n,i) -  \+ps      #include <...> STL                  (n,i) -  \+pc      #include <c..> C                    (n,i) -  \+cn      class (using new)                   (n,i) -  \+ci      class implementation                (n,i) -  \+cni     class (using new) implementation    (n,i) -  \+mi      method implementation               (n,i) -  \+ai      accessor implementation             (n,i) - -  \+tc      template class                      (n,i) -  \+tcn     template class (using new)          (n,i) -  \+tci     template class implementation       (n,i) -  \+tcni    template class (using new) impl.    (n,i) -  \+tmi     template method implementation      (n,i) -  \+tai     template accessor implementation    (n,i) - -  \+tf      template function                   (n,i) -  \+ec      error class                         (n,i) -  \+tr      try ... catch                       (n,v,i) -  \+ca      catch                               (n,v,i) -  \+c.      catch(...)                          (n,v,i) - -  -- Run ---------------------------------------------------------------- - -  \rc       save and compile                    (n,i) -  \rl       link                                (n,i) -  \rr       run                                 (n,i) -  \ra       set comand line arguments           (n,i) -  \rm       run make                            (n,i) -  \rg       cmd. line arg. for make             (n,i) -  \rp       run splint                          (n,i) -  \ri       cmd. line arg. for splint           (n,i) -  \rk       run CodeCheck (TM)                  (n,i) -  \re       cmd. line arg. for CodeCheck (TM)   (n,i) -  \rd       run indent                          (n,v,i) -  \rh       hardcopy buffer                     (n,v,i) -  \rs       show plugin settings                (n,i) -  \rx       set xterm size                      (n, only Linux/UNIX & GUI) -  \ro       change output destination           (n,i) - -  -- Load / Unload C/C++ Support ---------------------------------------- - -  \lcs      Load C/C++ Support Menus            (n, GUI only) -  \ucs      Unload C/C++ Support Menus          (n, GUI only) - -The hotkeys are defined in the file type plugin c.vim (part of this csupport -plugin package) and described in the document c-hot-keys.pdf - -Changing the default map leader '\' ------------------------------------ -The map leader can be changed by the user by setting a global variable in the -file .vimrc  - - let g:C_MapLeader  = ',' - -The map leader is now a comma. The 'line end comment' command is now defined -as ',cl'. This setting will be used as a so called local leader and influences -only files with filetype 'c' and 'cpp'. - -============================================================================== -3.  HOTKEYS                                                 *csupport-hotkeys* -============================================================================== - -The following hotkeys are defined in normal, visual and insert mode: - -       F9   compile and link -   Alt-F9   write buffer and compile -  Ctrl-F9   run executable - Shift-F9   set command line arguments - - Shift-F2   switch between source files and header files - -The hotkeys are defined in the file type plugin  c.vim.  All hotkeys from the -non-GUI mode also work for gVim (see |csupport-usage-vim|). - -Shift-F2 can be used to switch between source files and header files if the -plugin a.vim (http://vim.sourceforge.net/scripts/script.php?script_id=31) is -present.  To suppress the creation of a new header file when switching from a -source file the file ~/.vimrc should contain a line - -  let g:alternateNoDefaultAlternate = 1 - -A header file will only be opened if it already exists. - -The Shift-key is dead when you are working with Vim in a console terminal -(non-Gui). You could add  - -  noremap   \a        :A<CR> - inoremap   \a   <C-C>:A<CR> - -to get a hot key for this case. - -============================================================================== -4.  CUSTOMIZATION                                            *csupport-custom* -============================================================================== - ------------------------------------------------------------------------------- -4.1  GLOBAL VARIABLES                              *csupport-custom-glob-vars* ------------------------------------------------------------------------------- - -Several global variables are checked by the script to customize it: - -  ---------------------------------------------------------------------------- -  GLOBAL VARIABLE           DEFAULT VALUE                    TAG (see below) -  ---------------------------------------------------------------------------- -  g:C_GlobalTemplateFile     plugin_dir.'c-support/templates/Templates' -  g:C_LocalTemplateFile      $HOME.'/.vim/c-support/templates/Templates' -  g:C_TemplateOverwrittenMsg 'yes' -  g:C_Ctrl_j                 'on' - -  g:C_CodeSnippets           plugin_dir."/c-support/codesnippets/" -  g:C_Dictionary_File        "" -  g:C_LoadMenus              "yes" -  g:C_MenuHeader             "yes" -  g:C_OutputGvim             "vim" -  g:C_XtermDefaults          "-fa courier -fs 12 -geometry 80x24" -  g:C_Printheader            "%<%f%h%m%<  %=%{strftime('%x %X')}     Page %N" -  g:C_MapLeader              '\' -  g:C_GuiSnippetBrowser      'gui' -  g:C_GuiTemplateBrowser     'gui' - -  Linux/UNIX: -   g:C_ObjExtension          ".o" -   g:C_ExeExtension          "" -   g:C_CCompiler             "gcc" -   g:C_CplusCompiler         "g++" -   g:C_Man                   "man" -  Windows: -   g:C_ObjExtension          ".obj" -   g:C_ExeExtension          ".exe" -   g:C_CCompiler             "gcc.exe" -   g:C_CplusCompiler         "g++.exe" -   g:C_Man                   "man.exe" -  g:C_CFlags                 "-Wall -g -O0 -c" -  g:C_LFlags                 "-Wall -g -O0" -  g:C_Libs                   "-lm" -  g:C_LineEndCommColDefault  49 -  g:C_CExtension             "c" -  g:C_TypeOfH                "cpp" -  g:C_SourceCodeExtensions   "c cc cp cxx cpp CPP c++ C i ii" - -  g:C_CodeCheckExeName       "check" -  g:C_CodeCheckOptions       "-K13" - -The variable plugin_dir will automatically be set to one of the following values: -  $HOME.'/.vim/'        for Linux/Unix -  $VIM.'/vimfiles/'     for Windows - -  ---------------------------------------------------------------------------- - - 1. group: g:C_GlobalTemplateFile : Sets the master template file (see|csupport-templates|) -           g:C_LocalTemplateFile  : Sets the local template file  (see|csupport-templates|) -           g:C_TemplateOverwrittenMsg : message if template is overwritten -           g:C_Ctrl_j                 : hotkey Ctrl-j  'on'/'off' (see|csupport-Ctrl-j|) - - 2. group: g:C_CodeSnippets       : The name of the code snippet directory -                                   (see |csupport-snippets|). -           g:C_Dictionary_File    : The name(s) of the dictionary file(s) used for -                                    word completion (see also |csupport-dictionary|) -           g:C_Root               : the name of the root menu of this plugin -           g:C_LoadMenus          : Load menus and mappings ("yes", "no") at startup. -           g:C_MenuHeader         : Switch the submenu header on/off. -           g:C_OutputGvim         : when program is running output goes to the vim -                                    command line ("vim"), to a buffer ("buffer") or to -                                    an xterm ("xterm"). -           g:C_XtermDefaults      : the xterm defaults -           g:C_Printheader        : hardcopy: definition of the page header -           g:C_MapLeader          : the map leader for hotkeys (see|csupport-usage-vim|) -           g:C_GuiSnippetBrowser  : code snippet browser: 'gui', 'commandline' -           g:C_GuiTemplateBrowser : code template browser: 'gui', 'explorer', 'commandline'  -  - 3. group: g:C_CExtension             : Extension of C files. Everything else is C++. -           g:C_TypeOfH                : filetype of header files with extension 'h' (c,cpp) -           g:C_SourceCodeExtensions   : filename extensions for C/C++ -                                        implementation files -           g:C_CCompiler              : The name of the C compiler. -           g:C_CplusCompiler          : The name of the C++ compiler. -           g:C_Man                    : The name of the man utility. -           g:C_CFlags                 : Compiler flags used for a compilation. -           g:C_LFlags                 : Compiler flags used for linkage. -           g:C_Libs                   : Libraries to link with. -           g:C_ObjExtension           : C/C+ file extension for objects -                                        (leading point required if not empty) -           g:C_ExeExtension           : C/C+ file extension for executables -                                        (leading point required if not empty) -           g:C_LineEndCommColDefault  : Default starting column for end-of-line comments. -           g:C_CodeCheckExeName       : The name of the CodeCheck (TM) executable -                                        (the default is 'check') -           g:C_CodeCheckOptions       : Default options for CodeCheck (TM) -                                       (see |csupport-run-codecheck|). - -To override the default add appropriate assignments to ~/.vimrc . - ------------------------------------------------------------------------------- -4.2  THE ROOT MENU                                 *csupport-custom-root-menu* ------------------------------------------------------------------------------- - -The variable g:C_Root, if set (in ~/.vimrc or in ~/.gvimrc), gives the name of -the single Vim root menu item in which the C/C++ submenus will be put.  The -default is -                  '&C\/C\+\+.' -Note the terminating dot. A single root menu can be used if the screen is -limited or several plugins are used in parallel. - -If set to "", this single root menu item will not appear.  Now all submenus -are put into the Vim root menu. This is nice for beginners in a lab -installation or for C-only programmers. - ------------------------------------------------------------------------------- -4.3  SYSTEM-WIDE INSTALLATION                           *csupport-system-wide* ------------------------------------------------------------------------------- - -A system-wide installation (one installation for all users) is done as -follows. - -As *** SUPERUSER *** : - -(1) Find the Vim installation directory. -The Vim Ex command ':echo $VIM' gives '/usr/local/share/vim' or something like -that. Beyond this directory you will find the Vim installation,  e.g. in -'/usr/local/share/vim/vim71' if Vim version 7.1 has been installed. - -(2) Create a new subdirectory 'vimfiles', e.g. '/usr/local/share/vim/vimfiles'. - -(3) Install C/C++ Support -Copy the archive cvim.zip to this new directory and unpack it: -  unzip cvim.zip - -(4) Generate the help tags: -  :helptags $VIM/vimfiles/doc - - -As *** USER *** : - -Create your private snippet directory: - -  mkdir --parents  ~/.vim/c-support/codesnippets - -You may want to copy the snippets coming with this plugin (in -$VIM/vimfiles/c-support/codesnippets) into the new directory or to set a -link to the global directory. - -Create your private template directory: - -  mkdir --parents  ~/.vim/c-support/template - -Create a private template file 'Templates' in this directory to overwrite some -macros, e.g. - - *|AUTHOR|*    = your name - *|AUTHORREF|* = ... - *|EMAIL|*     = ... - *|COMPANY|*   = ... - *|COPYRIGHT|* = ... - -You can also have local templates which overwrite the global ones. To suppress -the messages in this case set a global variable in '~/.vimrc' : - -  let g:C_TemplateOverwrittenMsg= 'no' - -The default is 'yes'. - -============================================================================== -5.  TEMPLATE FILES AND TAGS                               *csupport-templates* -============================================================================== - ------------------------------------------------------------------------------- -5.1  TEMPLATE FILES                                 *csupport-templates-files* ------------------------------------------------------------------------------- - -Nearly all menu entries insert code snippets or comments. All these stuff is -taken from template files and can be changed by the user to meet his -requirements. - -The master template file is '$HOME/.vim/c-support/templates/Templates' for a -user installation and  '$VIM/vimfiles/c-support/templates/Templates' for a -system-wide installation (see|csupport-system-wide|). - -The master template file starts with a macro section followed by templates for -single menu items or better by including other template files grouping the -templates according to the menu structure of this plugin. The master file -could look like this: - -  $ -  $ ============================================================= -  $ ========== USER MACROS ====================================== -  $ ============================================================= -  $ - *|AUTHOR|*    = Dr. Fritz Mehner - *|AUTHORREF|* = mn - *|EMAIL|*     = mehner@fh-swf.de - *|COMPANY|*   = FH Südwestfalen, Iserlohn - *|COPYRIGHT|* = Copyright (c)*|YEAR|,|AUTHOR|* -  $ -  $ ============================================================= -  $ ========== FILE INCLUDES ==================================== -  $ ============================================================= -  $ - *|includefile|* = c.comments.template - *|includefile|* = c.cpp.template - *|includefile|* = c.idioms.template - *|includefile|* = c.preprocessor.template - *|includefile|* = c.statements.template - -Lines starting with a dollar sign are comments. The section starting -with *|AUTHOR|* assigns values to predefined tags -(see|csupport-templates-macros|) to personalize some templates. Other -predefined tags with given default values can be used (e.g. *|YEAR|* ). - -User defined tags are possible. They have the following syntax: - - *|macroname|* = replacement - -A macroname starts with a letter (uppercase or lowercase) followed by zero or -more letters, digits or underscores. - ------------------------------------------------------------------------------- -5.2  MACROS                                        *csupport-templates-macros* ------------------------------------------------------------------------------- - -The following macro names are predefined. The first group is used to -personalize templates. - - ---------------------------------------------------------------------------- - PREDEFINED MACROS  DEFAULT VALUE - ---------------------------------------------------------------------------- -*|AUTHOR|*          "" -*|AUTHORREF|*       "" -*|EMAIL|*           "" -*|COMPANY|*         "" -*|PROJECT|*         "" -*|COPYRIGHTHOLDER|* "" -*|STYLE|*           "" -*|includefile|*     "" - -*|BASENAME|*        filename without path and suffix -*|DATE|*            the preferred date representation for the current locale -                    without the time -*|FILENAME|*        filename without path -*|PATH|*            path without filename -*|SUFFIX|*          filename suffix -*|TIME|*            the preferred time representation for the current locale -                    without the date and the time zone or name or abbreviation -*|YEAR|*            the year as a decimal number including the century - -The macro *|includefile|* can  be used to include an additional template file. -A file will be included only once. Commenting and uncommenting include macros -is a simple way to switch between several sets of templates (see also -|csupport-run-templates|). Overwriting existing macros and templates is -possible. - - ---------------------------------------------------------------------------- - PREDEFINED TAGS - ---------------------------------------------------------------------------- - <CURSOR>             The cursor position after insertion of a template - <+text+>,<-text->,   Jump targets in templates. Jump with Ctrl-j. - {+text+},{-text-}    See |csupport-templates-jump|. - - <SPLIT>              The split point when inserting in visual mode -                      (see|csupport-templates-definition|) - -A dependent template file can start with its own macro section. There is no -need to have all user defined macros in the master file. -When the first template definition is found (see below) macro definitions are -no longer recognized. - ------------------------------------------------------------------------------- -5.2.1  USER DEFINED FORMATS FOR DATE AND TIME        *csupport-templates-date* ------------------------------------------------------------------------------- -The format for *|DATE|* ,*|TIME|* , and*|YEAR|* can be set by the user. The -defaults are -    *|DATE|*        '%x' -    *|TIME|*        '%X' -    *|YEAR|*        '%Y' -See the manual page of the C function strftime() for the format.  The accepted -format depends on your system, thus this is not portable!  The maximum length -of the result is 80 characters. - -User defined formats can be set using the following global variables in -~/.vimrc ,  e.g. -    let g:C_FormatDate            = '%D' -    let g:C_FormatTime            = '%H:%M' -    let g:C_FormatYear            = 'year %Y' - ------------------------------------------------------------------------------- -5.3  TEMPLATES                                      *csupport-templates-names* ------------------------------------------------------------------------------- - -5.3.1  Template names - -The template behind a menu entry is identified by a given name. The first part -of the name identifies the menu, the second part identifies the item. The -modes are also hard coded (see|csupport-templates-definition|for the use of -<SPLIT>). - -  TEMPLATE NAME                                              MODES - -------------------------------------------------------------------------- - -  comment.class                                              normal -  comment.end-of-line-comment                                normal -  comment.file-description                                   normal -  comment.file-description-header                            normal -  comment.file-section-cpp-class-defs                        normal -  comment.file-section-cpp-class-implementations-exported    normal -  comment.file-section-cpp-class-implementations-local       normal -  comment.file-section-cpp-data-types                        normal -  comment.file-section-cpp-function-defs-exported            normal -  comment.file-section-cpp-function-defs-local               normal -  comment.file-section-cpp-header-includes                   normal -  comment.file-section-cpp-local-variables                   normal -  comment.file-section-cpp-macros                            normal -  comment.file-section-cpp-prototypes                        normal -  comment.file-section-cpp-typedefs                          normal -  comment.file-section-hpp-exported-class-defs               normal -  comment.file-section-hpp-exported-data-types               normal -  comment.file-section-hpp-exported-function-declarations    normal -  comment.file-section-hpp-exported-typedefs                 normal -  comment.file-section-hpp-exported-variables                normal -  comment.file-section-hpp-header-includes                   normal -  comment.file-section-hpp-macros                            normal -  comment.frame                                              normal -  comment.function                                           normal -  comment.keyword-bug                                        normal -  comment.keyword-compiler                                   normal -  comment.keyword-keyword                                    normal -  comment.keyword-todo                                       normal -  comment.keyword-tricky                                     normal -  comment.keyword-warning                                    normal -  comment.keyword-workaround                                 normal -  comment.method                                             normal -  comment.special-constant-type-is-long                      normal -  comment.special-constant-type-is-unsigned-long             normal -  comment.special-constant-type-is-unsigned                  normal -  comment.special-empty                                      normal -  comment.special-fall-through                               normal -  comment.special-implicit-type-conversion                   normal -  comment.special-no-return                                  normal -  comment.special-not-reached                                normal -  comment.special-remains-to-be-implemented                  normal - -  cpp.accessor-implementation                                normal -  cpp.catch                                                  normal, visual -  cpp.catch-points                                           normal, visual -  cpp.cin                                                    normal -  cpp.class-definition                                       normal -  cpp.class-implementation                                   normal -  cpp.class-using-new-definition                             normal -  cpp.class-using-new-implementation                         normal -  cpp.cout-operator                                          normal -  cpp.cout                                                   normal -  cpp.error-class                                            normal -  cpp.extern                                                 normal, visual -  cpp.method-implementation                                  normal -  cpp.namespace-block                                        normal, visual -  cpp.namespace                                              normal -  cpp.namespace-std                                          normal -  cpp.open-input-file                                        normal -  cpp.open-output-file                                       normal -  cpp.operator-in                                            normal -  cpp.operator-out                                           normal -  cpp.output-manipulator-boolalpha                           normal -  cpp.output-manipulator-dec                                 normal -  cpp.output-manipulator-endl                                normal -  cpp.output-manipulator-fixed                               normal -  cpp.output-manipulator-flush                               normal -  cpp.output-manipulator-hex                                 normal -  cpp.output-manipulator-internal                            normal -  cpp.output-manipulator-left                                normal -  cpp.output-manipulator-oct                                 normal -  cpp.output-manipulator-right                               normal -  cpp.output-manipulator-scientific                          normal -  cpp.output-manipulator-setbase                             normal -  cpp.output-manipulator-setfill                             normal -  cpp.output-manipulator-setiosflag                          normal -  cpp.output-manipulator-setprecision                        normal -  cpp.output-manipulator-setw                                normal -  cpp.output-manipulator-showbase                            normal -  cpp.output-manipulator-showpoint                           normal -  cpp.output-manipulator-showpos                             normal -  cpp.output-manipulator-uppercase                           normal -  cpp.rtti-const-cast                                        normal -  cpp.rtti-dynamic-cast                                      normal -  cpp.rtti-reinterpret-cast                                  normal -  cpp.rtti-static-cast                                       normal -  cpp.rtti-typeid                                            normal -  cpp.template-accessor-implementation                       normal -  cpp.template-class-definition                              normal -  cpp.template-class-implementation                          normal -  cpp.template-class-using-new-definition                    normal -  cpp.template-class-using-new-implementation                normal -  cpp.template-function                                      normal -  cpp.template-method-implementation                         normal -  cpp.try-catch                                              normal, visual - -  idioms.assert                                              normal -  idioms.calloc                                              normal -  idioms.enum                                                normal, visual -  idioms.fprintf                                             normal -  idioms.fscanf                                              normal -  idioms.function                                            normal, visual -  idioms.function-static                                     normal, visual -  idioms.main                                                normal, visual -  idioms.malloc                                              normal -  idioms.open-input-file                                     normal -  idioms.open-output-file                                    normal -  idioms.printf                                              normal -  idioms.scanf                                               normal -  idioms.sizeof                                              normal -  idioms.struct                                              normal, visual -  idioms.union                                               normal, visual - -  preprocessor.define                                        normal -  preprocessor.ifdef-else-endif                              normal, visual -  preprocessor.if-else-endif                                 normal, visual -  preprocessor.ifndef-def-endif                              normal, visual -  preprocessor.ifndef-else-endif                             normal, visual -  preprocessor.include-global                                normal -  preprocessor.include-local                                 normal -  preprocessor.undefine                                      normal - -  statements.block                                           normal, visual -  statements.case                                            normal -  statements.do-while                                        normal, visual -  statements.for-block                                       normal -  statements.for                                             normal -  statements.if-block-else                                   normal, visual -  statements.if-block                                        normal, visual -  statements.if-else                                         normal, visual -  statements.if                                              normal -  statements.switch                                          normal, visual -  statements.while-block                                     normal, visual -  statements.while                                           normal - - -5.3.2  Template definition                     *csupport-templates-definition* - -A template definition starts with a template head line with the following -syntax: - -  == templatename == [ position == ] - -The templatename is one of the above template identifiers. The position -attribute is optional. Possible attribute values are: - -  above     insert the template before the current line -  append    append the template to the current line -  below     insert the template below the current line -  insert    insert the template at the cursor position -  start     insert the template before the first line of the buffer - -An example: - -  == comment.function == -  /* -   * ===  FUNCTION  ======================================================= -   *         Name:  <CURSOR> -   *  Description: -   * ====================================================================== -   */ - -The definition of a template ends at the next head line or at the end of the -file. - -Templates for the visual mode can use <SPLIT>. The text before <SPLIT> will -than be inserted above the marked area, the text after <SPLIT> will be -inserted behind the marked area. An example: - -  == statements.if-block-else == -  if ( <CURSOR> ) { -  <SPLIT>} else { -  } - -If applied to the marked block - -  xxxxxxxxxxx -  xxxxxxxxxxx - -this template yields - -  if (  ) { -    xxxxxxxxxxx -    xxxxxxxxxxx -  } else { -  } - -The templates with a visual mode are shown in the table under -|csupport-templates-names|. - -5.3.3  Template expansion                       *csupport-templates-expansion* - -There are additional ways to control the expansion of a template. - -USER INPUT ----------- -If the usage of a yet undefined user macro starts with a question mark the -user will be asked for the replacement first, e.g. with the following template - -  == idioms.function == -  void<CURSOR> - *|?FUNCTION_NAME|* (  ) -  { -  <SPLIT> return ; -  }   /* -----  end of function*|FUNCTION_NAME|* ----- */ - -The user can specify the function name which then will be applied twice. If -the macro was already in use the old value will be suggested as default. - -MACRO MANIPULATION ------------------- - -A macro expansion can be controlled by the following attributes - -  :l    change macro text to lowercase -  :u    change macro text to uppercase -  :c    capitalize macro text -  :L    legalize name - -The include guard template is an example for the use of ':L' : - -  == preprocessor.ifndef-def-endif == - #ifndef *|?BASENAME:L|_INC* - #define *|BASENAME|_INC* - <CURSOR><SPLIT> - #endif   // ----- #ifndef*|BASENAME|_INC* ----- - -The base name of the file shall be used as part of the include guard name. -The predefined macro*|BASENAME|* is used to ask for this part because this -macro has already a defined value. That value can accepted or replaced by the -user. For the filename 'test test++test.h' the legalized base name -'TEST_TEST_TEST' will be suggested. - -Legalization means: - - replace all whitespaces by underscores - - replace all non-word characters by underscores - - replace '+' and '-' by underscore - -5.3.4  The macros <+text+> etc.                      *csupport-templates-jump* - -There are four macro types which can be used as jump targets in templates: - - <+text+>   Can be jumped to by hitting Ctrl-j. - {+text+}   Same as <+text+>. Used in cases where indentation gives unwanted -            results with the first one. -  - <-text->   Same as the two above. Will be removed if the template is used - {-text-}   in visual mode. - -The text inside the brackets is userdefined and can be empty. The text -can be composed from letters (uppercase and lowercase), digits, underscores -and blanks. After the insertion of an template these jump targets will be -highlighted.  - -5.3.5  Command Ctrl-j                                        *csupport-Ctrl-j* - -Use the command Ctrl-j to jump to the next target. The target will be removed -and the mode will switched to insertion. Ctrl-j works in normal and in insert -mode. - -The template for a function can be written as follows: - - == idioms.function == - void<CURSOR> - |?FUNCTION_NAME| ( <+argument list+> ) - { - <SPLIT>  return <+return value+>; - }    /* -----  end of function |FUNCTION_NAME|  ----- */ - -The cursor will be set behind 'void'. You can remove 'void' easily with  -Ctrl-w (delete word before cursor) and insert a new type. A Ctrl-j leads you -to the argument list. The target disappears and you can type on. When the -function body is written a final Ctrl-j brings you to the return statement. - -The following example shows the usage of the type {-text-}. The idiom for the -opening of a file marks the line before the file is closed. This is also the -line where the template will be split to surround a marked area. In this case -(visual mode) the target is not needed and therefore removed (minus signs as -mnemonic). In normal and insert mode the target is meaningful and will be -therefore be present.  The form <-...-> would result in a wrong indentation of -the file close statement. The brace type will be handled as a block and the -indentation will be correct. - - == cpp.open-input-file == - char *ifs_file_name = "<CURSOR>";    /* input  file name       */ - ifstream ifs;              /* create ifstream object */ -  - ifs.open (ifs_file_name);    /* open ifstream          */ - if (!ifs) { -  cerr << "\nERROR : failed to open input  file " << ifs_file_name << endl; -  exit (EXIT_FAILURE); - } - <SPLIT>{-continue here-} - ifs.close ();    /* close ifstream         */ - -Extra feature of Ctrl-j ------------------------ -If none of the above described targets is left Ctrl-j can be used to jump -behind closing brackets, parenthesis, braces,  or string terminators ('"`). -This feature is limited to the current line. Ctrl-j does not jump behind the -last character in a line. - - -How to switch the mapping for Ctrl-j off ----------------------------------------- -The original meaning of Ctrl-j is 'move [n] lines downward' (see |CTRL-j|). -If you are accustomed to use the deafult and don't like these jump targets you -can switch them off.  Put the following line in the file .vimrc : - -  let g:C_Ctrl_j   = 'off' - -The default value of g:C_Ctrl_j is 'on'. You do not have to change the -template files. All jump targets will be removed before a template will be -inserted.  - -============================================================================== -5.4  SWITCHING BETWEEN TEMPLATE SETS                 *csupport-templates-sets* -============================================================================== - -This plugin comes with two sets of templates. These are suggestions. You may -want to have additional sets for different projects or occasionally want to -use doxygen style comments.  To facilitate switching use the macro*|STYLE|* -(|csupport-templates-files|) to define a unique name and the -IF-ENDIF-construct to choose a particular set of files for example: - -   ... - - *|STYLE|*    = C -  $ -  $ ============================================================= -  $ ========== FILE INCLUDES ==================================== -  $ ============================================================= -  $ -  == IF *|STYLE|* IS C  == -  $ -  |includefile| = c.comments.template -  |includefile| = c.cpp.template -  |includefile| = c.idioms.template -  |includefile| = c.preprocessor.template -  |includefile| = c.statements.template -  $ -  == ENDIF == - -   ... - -The syntax is as follows: - -  == IF macro_name IS macro_value  == -    -  == ENDIF == - -Includes outside an IF-ENDIF construct are associated with the default style -'default'. A style set does not have to a complete set of templates. For an -incomplete set the other templates are taken from the default style. - -IF, IS, and ENDIF are keywords. - -HINT. Use these constructs to avoid overwriting your templates when updating -csupport. Copy and rename the set of files you want to change and surround the -includes with an appropriate IF-construct: - - *|STYLE|*    = MY_C -  $ -   ... -  $ -  == IF *|STYLE|* IS MY_C  == -  |includefile| = my_c.comments.template -  |includefile| = my_c.cpp.template -  |includefile| = my_c.idioms.template -  |includefile| = my_c.preprocessor.template -  |includefile| = my_c.statements.template -  == ENDIF == - -Keep a copy of the main template file 'Templates' because this file will be -overwritten if you do not update manually. - -============================================================================== -5.5  BINDING A STYLE TO A FILE EXTENSION             *csupport-templates-bind* -============================================================================== - -You can bind the existing styles to one or more filename extensions. To do so -assign a Dictionary to the global variable g:C_Styles in '~/.vimrc' : - -let g:C_Styles = { '*.c,*.h' : 'default', '*.cc,*.cpp,*.hh' : 'CPP' } - -A Dictionary is created with a comma separated list of entries in curly -braces.  Each entry has a key and a value, separated by a colon.  Each key can -only appear once. The keys are themselves a comma separated list of filename -pattern. The values are existing styles defined in the template files. -The given style will be set automatically when switching to a buffer or -opening a new buffer with the associated filename pattern and supersedes the -macro *|STYLE|* . - -============================================================================== -6.  C/C++ DICTIONARY                                     *csupport-dictionary* -============================================================================== - -The files - - c-c++-keywords.list - k+r.list - stl_index.list - -are a part of this plugin and can be used (together with your own lists) as -dictionaries for automatic word completion.  This feature is enabled by -default. The default word lists are - -  plugin_dir/c-support/wordlists/c-c++-keywords.list -  plugin_dir/c-support/wordlists/k+r.list -  plugin_dir/c-support/wordlists/stl_index.list - -The variable plugin_dir will automatically be set by the plugin to one of the -following values: -  $HOME.'/.vim/'        for Linux/Unix -  $VIM.'/vimfiles/'     for Windows -If you want to use an additional list MyC.list put the following lines into - ~/.vimrc : - -  let g:C_Dictionary_File = PLUGIN_DIR.'/c-support/wordlists/c-c++-keywords.list,'. -        \                   PLUGIN_DIR.'/c-support/wordlists/k+r.list,'. -        \                   PLUGIN_DIR.'/c-support/wordlists/stl_index.list,'. -        \                   PLUGIN_DIR.'/c-support/wordlists/MyC.list' - -When in file ~/.vimrc the name PLUGIN_DIR has to be replaced by $HOME or -$VIM (see above). Whitespaces in the pathnames have to be escaped with a -backslash. -The right side is a comma separated list of files. Note the point at the end -of the first line (string concatenation) and the backslash in front of the -second line (continuation line). -You can use Vim's dictionary feature CTRL-X, CTRL-K (and CTRL-P, CTRL-N). - -============================================================================== -7.  EXTENDING  ctags                                          *csupport-ctags* -============================================================================== - ------------------------------------------------------------------------------- -7.1  make AND qmake                                      *csupport-ctags-make* ------------------------------------------------------------------------------- - -The use of the Vim plugin taglist.vim (Author: Yegappan Lakshmanan) is highly -recommended. It uses the program ctags which generates tag files for 3 dozen -languages (Exuberant Ctags, Darren Hiebert, http://ctags.sourceforge.net). -With the following extensions the list of targets in a makefile can be shown -in the taglist window. - - 1) Append the file customization.ctags to the file $HOME/.ctags . - - 2) Add the following lines (from customization.vimrc) to $HOME/.vimrc : - -  " -  "------------------------------------------------------------------- -  " taglist.vim : toggle the taglist window -  " taglist.vim : define the title texts for make -  " taglist.vim : define the title texts for qmake -  "------------------------------------------------------------------- -   noremap <silent> <F11>  <Esc><Esc>:Tlist<CR> -  inoremap <silent> <F11>  <Esc><Esc>:Tlist<CR> - -  let tlist_make_settings  = 'make;m:makros;t:targets;i:includes' -  let tlist_qmake_settings = 'qmake;t:SystemVariables' - -  if has("autocmd") -    " ----------  qmake : set file type for *.pro  ---------- -    autocmd BufNewFile,BufRead *.pro  set filetype=qmake -  endif " has("autocmd") - - 3) restart vim/gvim - -The two maps will toggle the taglist window (hotkey F11) in all editing modes. -The two assignments define the headings for the (q)make sections in the -taglist window.  The autocmd set the file type 'qmake' for the filename -extension 'pro' (ctags needs this). - ------------------------------------------------------------------------------- -7.2  TEMPLATES                                      *csupport-ctags-templates* ------------------------------------------------------------------------------- - -If you frequently change the plugin  templates and you are using the taglist -plugin (section above) you may want to use this plugin for navigation. This is -achieved in two steps. First add a new language definition to  the file -$HOME/.ctags : - -  --langdef=template -  --langmap=template:.template,TEMPLATE -  --regex-template=/^==\s+([^=]+)\s+==\s*(\s+==\s+([^=]+)\s+==)?/\1/t,template/ - -Now add the following lines to the file $HOME/.vimrc : - -  let tlist_template_settings  = 'template;t:template' -  "--------------------------------------------------------------- -  " plugin templates : set filetype for *.template   -  "--------------------------------------------------------------- -  if has("autocmd") -    autocmd BufNewFile,BufRead Templates  set filetype=template -    autocmd BufNewFile,BufRead *.template  set filetype=template -  endif " has("autocmd") - -The assignment defines the heading for the template section in the taglist -window.  The autocmds set the file type 'template' for the main template file -'Templates' and the includefiles '*.template' (if any). - -============================================================================== -8.  FOLDING                                                 *csupport-folding* -============================================================================== - -This plugin can be used together with folding. - -There are a few peculiarities when the cursor is on a closed fold before -inserting a template: - -Normal mode ------------ -Inserting blocks of complete lines below and above a fold (e.g. frame -comments) and inserting at the top of a buffer (e.g. file description) works -as usual. -Insertions which go to the end of a line (e.g. end-of-line comments) and -insertions which go to the cursor position (e.g. 'sizeof()') will be suppressed -and a warning will be shown. - -Visual mode ------------ -A range of lines containing closed folds can be surrounded by constructs which -have a visual mode, e.g. a for-loop:  - -    for ( ; ; ) { -  +---  4 lines: {------------------------------------------------------------ -    } - -See |folding| for more information on folding. - -============================================================================== -9.  Additional Mappings                                 *csupport-ad-mappings* -============================================================================== - -There are a few additional filetype specific key mappings defined in -'~/.vim/ftplugin/c.vim'. - -Complete a classical C comment: '/*' => '/* | */' (modes: i,v). - -Complete a classical C multi-line comment (mode: i):  -  '/*<CR>' =>  /* -                * | -                */ - -Open a block (modes: i,v): -  '{<CR>' =>  { -                | -              } -In visual mode the content of the new block will be indented. - -============================================================================== -10.  WINDOWS PARTICULARITIES                                *csupport-windows* -============================================================================== - -The plugin should go into the directory structure below the local -installation directory $HOME/.vim/ for LINUX/UNIX and $VIM/vimfiles/ for -Windows. -The values of the two variables can be found from inside Vim: -   :echo $VIM -or -   :echo $HOME - -Configuration files: - -  LINUX/UNIX :   $HOME/.vimrc  and  $HOME/.gvimrc -  Windows    :   $VIM/_vimrc   and  $VIM/_gvimrc - -Compiler settings: - -It could be necessary to add further settings for your compiler.  To compile -C++-programs using a Dev-C++ installation (http://www.bloodshed.net) the -following item in $VIM/_vimrc is needed (depends on the Dev-C++ install -directory): - -  let g:C_CFlags  = '-Wall -g -o0 -c -I c:\programs\dev-c++\include\g++' - -============================================================================== -11.  ADDITIONAL TIPS                                           *csupport-tips* -============================================================================== - -(1) gVim. Toggle 'insert mode' <--> 'normal mode' with the right mouse button -    (see mapping in file costumization.gvimrc). - -(2) gVim. Use tear off menus. - -(3) Try 'Focus under mouse' as window behavior (No mouse click when the mouse -    pointer is back from the menu item). - -(4) Use Emulate3Buttons "on" (X11) even for a 3-button mouse. Pressing left -    and right button at the same time without moving your fingers is faster -    then moving a finger to the middle button (often a wheel). - -============================================================================== -12.  TROUBLESHOOTING                                *csupport-troubleshooting* -============================================================================== - -* I do not see any new main menu item. -  - Was the archive extracted into the right directory? - -* How can I see what was loaded? -  - Use ':scriptnames' from the Vim command line. - -* No main menu item. -  - Loading of plugin files must be enabled. If not use -      :filetype plugin on -    This is the minimal content of the file '$HOME/.vimrc'. Create one if there -    is none, or better use customization.vimrc. - -* Most key mappings do not work. -  - They are defined in a filetype plugin in '$HOME/.vim/ftplugin/'. Use -    ':filetype' to check if filetype plugins are enabled. If not, add the line -      filetype plugin on -    to the file '~/.vimrc'. - -* Some hotkeys do not work. -  - The hotkeys might be in use by your graphical desktop environment.  Under -    KDE Ctrl-F9 is the hotkey which let you switch to the 9. desktop.  The key -    settings can usually be redefined. - -* Splint and/or CodeCheck menu item not visible. -  - The program is not installed or not found (path not set) or not executable. - -============================================================================== -13.  RELEASE NOTES                                    *csupport-release-notes* -============================================================================== -See file c-support/doc/ChangeLog . - -============================================================================== -vim:tw=78:noet:ts=2:ft=help:norl: diff --git a/.vim/ftplugin/c.vim b/.vim/ftplugin/c.vim deleted file mode 100644 index 1a4b473..0000000 --- a/.vim/ftplugin/c.vim +++ /dev/null @@ -1,436 +0,0 @@ -" ------------------------------------------------------------------------------ -" -" Vim filetype plugin file -" -"   Language :  C / C++ -"     Plugin :  c.vim  -" Maintainer :  Fritz Mehner <mehner@fh-swf.de> -"   Revision :  $Id: c.vim,v 1.57 2010/02/05 13:21:11 mehner Exp $ -" -" ------------------------------------------------------------------------------ -" -" Only do this when not done yet for this buffer -"  -if exists("b:did_C_ftplugin") -  finish -endif -let b:did_C_ftplugin = 1 -" -" ---------- Do we have a mapleader other than '\' ? ------------ -" -if exists("g:C_MapLeader") -  let maplocalleader  = g:C_MapLeader -endif     -" -" ---------- C/C++ dictionary ----------------------------------- -" This will enable keyword completion for C and C++ -" using Vim's dictionary feature |i_CTRL-X_CTRL-K|. -" Set the new dictionaries in front of the existing ones -"  -if exists("g:C_Dictionary_File") -  let save=&dictionary -  silent! exe 'setlocal dictionary='.g:C_Dictionary_File -  silent! exe 'setlocal dictionary+='.save -endif     -" -" ---------- F-key mappings  ------------------------------------ -" -"   Alt-F9   write buffer and compile -"       F9   compile and link -"  Ctrl-F9   run executable -" Shift-F9   command line arguments -" - map  <buffer>  <silent>  <A-F9>       :call C_Compile()<CR>:call C_HlMessage()<CR> -imap  <buffer>  <silent>  <A-F9>  <C-C>:call C_Compile()<CR>:call C_HlMessage()<CR> -" - map  <buffer>  <silent>    <F9>       :call C_Link()<CR>:call C_HlMessage()<CR> -imap  <buffer>  <silent>    <F9>  <C-C>:call C_Link()<CR>:call C_HlMessage()<CR> -" - map  <buffer>  <silent>  <C-F9>       :call C_Run()<CR> -imap  <buffer>  <silent>  <C-F9>  <C-C>:call C_Run()<CR> -" - map  <buffer>  <silent>  <S-F9>       :call C_Arguments()<CR> -imap  <buffer>  <silent>  <S-F9>  <C-C>:call C_Arguments()<CR> -" -" ---------- alternate file plugin (a.vim) ---------------------- -" -if exists("loaded_alternateFile") - map  <buffer>  <silent>  <S-F2>       :A<CR> -imap  <buffer>  <silent>  <S-F2>  <C-C>:A<CR> -endif -" -command! -nargs=1 -complete=customlist,C_CFileSectionList        CFileSection       call C_CFileSectionListInsert   (<f-args>) -command! -nargs=1 -complete=customlist,C_HFileSectionList        HFileSection       call C_HFileSectionListInsert   (<f-args>) -command! -nargs=1 -complete=customlist,C_KeywordCommentList      KeywordComment     call C_KeywordCommentListInsert (<f-args>) -command! -nargs=1 -complete=customlist,C_SpecialCommentList      SpecialComment     call C_SpecialCommentListInsert (<f-args>) -command! -nargs=1 -complete=customlist,C_StdLibraryIncludesList  IncludeStdLibrary  call C_StdLibraryIncludesInsert (<f-args>) -command! -nargs=1 -complete=customlist,C_C99LibraryIncludesList  IncludeC99Library  call C_C99LibraryIncludesInsert (<f-args>) -command! -nargs=1 -complete=customlist,C_CppLibraryIncludesList  IncludeCppLibrary  call C_CppLibraryIncludesInsert (<f-args>) -command! -nargs=1 -complete=customlist,C_CppCLibraryIncludesList IncludeCppCLibrary call C_CppCLibraryIncludesInsert(<f-args>) -command! -nargs=1 -complete=customlist,C_StyleList               CStyle             call C_Style                    (<f-args>) - -" ---------- KEY MAPPINGS : MENU ENTRIES ------------------------------------- -" ---------- comments menu  ------------------------------------------------ -" - noremap    <buffer>  <silent>  <LocalLeader>cl         :call C_LineEndComment()<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cl    <Esc>:call C_LineEndComment()<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>cl    <Esc>:call C_MultiLineEndComments()<CR>a - noremap    <buffer>  <silent>  <LocalLeader>cj         :call C_AdjustLineEndComm("a")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>cj    <Esc>:call C_AdjustLineEndComm("v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cj    <Esc>:call C_AdjustLineEndComm("a")<CR>a - noremap    <buffer>  <silent>  <LocalLeader>cs         :call C_GetLineEndCommCol()<CR> - - noremap    <buffer>  <silent>  <LocalLeader>c*         :call C_CodeComment("a","yes")<CR>:nohlsearch<CR>j -vnoremap    <buffer>  <silent>  <LocalLeader>c*    <Esc>:call C_CodeComment("v","yes")<CR>:nohlsearch<CR>j - - noremap    <buffer>  <silent>  <LocalLeader>cc         :call C_CodeComment("a","no")<CR>:nohlsearch<CR>j -vnoremap    <buffer>  <silent>  <LocalLeader>cc    <Esc>:call C_CodeComment("v","no")<CR>:nohlsearch<CR>j - noremap    <buffer>  <silent>  <LocalLeader>co         :call C_CommentCode("a")<CR>:nohlsearch<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>co    <Esc>:call C_CommentCode("v")<CR>:nohlsearch<CR> - - noremap    <buffer>  <silent>  <LocalLeader>cfr        :call C_InsertTemplate("comment.frame")<CR> - noremap    <buffer>  <silent>  <LocalLeader>cfu        :call C_InsertTemplate("comment.function")<CR> - noremap    <buffer>  <silent>  <LocalLeader>cme        :call C_InsertTemplate("comment.method")<CR> - noremap    <buffer>  <silent>  <LocalLeader>ccl        :call C_InsertTemplate("comment.class")<CR> - noremap    <buffer>  <silent>  <LocalLeader>cfdi       :call C_InsertTemplate("comment.file-description")<CR> - noremap    <buffer>  <silent>  <LocalLeader>cfdh       :call C_InsertTemplate("comment.file-description-header")<CR> - -inoremap    <buffer>  <silent>  <LocalLeader>cfr   <Esc>:call C_InsertTemplate("comment.frame")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cfu   <Esc>:call C_InsertTemplate("comment.function")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cme   <Esc>:call C_InsertTemplate("comment.method")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ccl   <Esc>:call C_InsertTemplate("comment.class")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cfdi  <Esc>:call C_InsertTemplate("comment.file-description")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cfdh  <Esc>:call C_InsertTemplate("comment.file-description-header")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>cd    <Esc>:call C_InsertDateAndTime('d')<CR> -inoremap    <buffer>  <silent>  <LocalLeader>cd    <Esc>:call C_InsertDateAndTime('d')<CR>a -vnoremap    <buffer>  <silent>  <LocalLeader>cd   s<Esc>:call C_InsertDateAndTime('d')<CR>a - noremap    <buffer>  <silent>  <LocalLeader>ct    <Esc>:call C_InsertDateAndTime('dt')<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ct    <Esc>:call C_InsertDateAndTime('dt')<CR>a -vnoremap    <buffer>  <silent>  <LocalLeader>ct   s<Esc>:call C_InsertDateAndTime('dt')<CR>a -" -" call the above defined commands: -" - noremap    <buffer>            <LocalLeader>ccs   <Esc>:CFileSection<Space> - noremap    <buffer>            <LocalLeader>chs   <Esc>:HFileSection<Space> - noremap    <buffer>            <LocalLeader>ckc   <Esc>:KeywordComment<Space> - noremap    <buffer>            <LocalLeader>csc   <Esc>:SpecialComment<Space> -" -inoremap    <buffer>            <LocalLeader>ccs   <Esc>:CFileSection<Space> -inoremap    <buffer>            <LocalLeader>chs   <Esc>:HFileSection<Space> -inoremap    <buffer>            <LocalLeader>ckc   <Esc>:KeywordComment<Space> -inoremap    <buffer>            <LocalLeader>csc   <Esc>:SpecialComment<Space> -"  -" ---------- statements menu  ------------------------------------------------ -" - noremap    <buffer>  <silent>  <LocalLeader>sd         :call C_InsertTemplate("statements.do-while")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>sd    <Esc>:call C_InsertTemplate("statements.do-while", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sd    <Esc>:call C_InsertTemplate("statements.do-while")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sf         :call C_InsertTemplate("statements.for")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sf    <Esc>:call C_InsertTemplate("statements.for")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sfo        :call C_InsertTemplate("statements.for-block")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>sfo   <Esc>:call C_InsertTemplate("statements.for-block", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sfo   <Esc>:call C_InsertTemplate("statements.for-block")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>si         :call C_InsertTemplate("statements.if")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>si    <Esc>:call C_InsertTemplate("statements.if")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sif        :call C_InsertTemplate("statements.if-block")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>sif   <Esc>:call C_InsertTemplate("statements.if-block", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sif   <Esc>:call C_InsertTemplate("statements.if-block")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sie        :call C_InsertTemplate("statements.if-else")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>sie   <Esc>:call C_InsertTemplate("statements.if-else", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sie   <Esc>:call C_InsertTemplate("statements.if-else")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sife       :call C_InsertTemplate("statements.if-block-else")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>sife  <Esc>:call C_InsertTemplate("statements.if-block-else", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sife  <Esc>:call C_InsertTemplate("statements.if-block-else")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>se         :call C_InsertTemplate("statements.else-block")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>se    <Esc>:call C_InsertTemplate("statements.else-block", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>se    <Esc>:call C_InsertTemplate("statements.else-block")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sw         :call C_InsertTemplate("statements.while")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sw    <Esc>:call C_InsertTemplate("statements.while")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>swh        :call C_InsertTemplate("statements.while-block")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>swh   <Esc>:call C_InsertTemplate("statements.while-block", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>swh   <Esc>:call C_InsertTemplate("statements.while-block")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>ss         :call C_InsertTemplate("statements.switch")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>ss    <Esc>:call C_InsertTemplate("statements.switch", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ss    <Esc>:call C_InsertTemplate("statements.switch")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sc         :call C_InsertTemplate("statements.case")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sc    <Esc>:call C_InsertTemplate("statements.case")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>s{         :call C_InsertTemplate("statements.block")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>s{    <Esc>:call C_InsertTemplate("statements.block", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>s{    <Esc>:call C_InsertTemplate("statements.block")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>sb         :call C_InsertTemplate("statements.block")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>sb    <Esc>:call C_InsertTemplate("statements.block", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>sb    <Esc>:call C_InsertTemplate("statements.block")<CR> -" -" ---------- preprocessor menu  ---------------------------------------------- -"" - noremap    <buffer>  <LocalLeader>ps                  :IncludeStdLibrary<Space> -inoremap    <buffer>  <LocalLeader>ps             <Esc>:IncludeStdLibrary<Space> - noremap    <buffer>  <LocalLeader>pc                  :IncludeC99Library<Space> -inoremap    <buffer>  <LocalLeader>pc             <Esc>:IncludeC99Library<Space> - noremap    <buffer>  <LocalLeader>+ps                 :IncludeCppLibrary<Space> -inoremap    <buffer>  <LocalLeader>+ps            <Esc>:IncludeCppLibrary<Space> - noremap    <buffer>  <LocalLeader>+pc                 :IncludeCppCLibrary<Space> -inoremap    <buffer>  <LocalLeader>+pc            <Esc>:IncludeCppC9Library<Space> -" - noremap    <buffer>  <silent>  <LocalLeader>p<        :call C_InsertTemplate("preprocessor.include-global")<CR> - noremap    <buffer>  <silent>  <LocalLeader>p"        :call C_InsertTemplate("preprocessor.include-local")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pd        :call C_InsertTemplate("preprocessor.define")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pu        :call C_InsertTemplate("preprocessor.undefine")<CR> -" -inoremap    <buffer>  <silent>  <LocalLeader>p<   <Esc>:call C_InsertTemplate("preprocessor.include-global")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>p"   <Esc>:call C_InsertTemplate("preprocessor.include-local")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pd   <Esc>:call C_InsertTemplate("preprocessor.define")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pu   <Esc>:call C_InsertTemplate("preprocessor.undefine")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>pie       :call C_InsertTemplate("preprocessor.if-else-endif")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pid       :call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pin       :call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pind      :call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR> - -vnoremap    <buffer>  <silent>  <LocalLeader>pie  <Esc>:call C_InsertTemplate("preprocessor.if-else-endif", "v")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>pid  <Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif", "v")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>pin  <Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif", "v")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>pind <Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif", "v")<CR> -                                      -inoremap    <buffer>  <silent>  <LocalLeader>pie  <Esc>:call C_InsertTemplate("preprocessor.if-else-endif")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pid  <Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pin  <Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pind <Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>pi0       :call C_PPIf0("a")<CR>2ji -inoremap    <buffer>  <silent>  <LocalLeader>pi0  <Esc>:call C_PPIf0("a")<CR>2ji -vnoremap    <buffer>  <silent>  <LocalLeader>pi0  <Esc>:call C_PPIf0("v")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>pr0       :call C_PPIf0Remove()<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pr0  <Esc>:call C_PPIf0Remove()<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>pe        :call C_InsertTemplate("preprocessor.error")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pl        :call C_InsertTemplate("preprocessor.line")<CR> - noremap    <buffer>  <silent>  <LocalLeader>pp        :call C_InsertTemplate("preprocessor.pragma")<CR> -" -inoremap    <buffer>  <silent>  <LocalLeader>pe   <Esc>:call C_InsertTemplate("preprocessor.error")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pl   <Esc>:call C_InsertTemplate("preprocessor.line")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>pp   <Esc>:call C_InsertTemplate("preprocessor.pragma")<CR> -" -" ---------- idioms menu  ---------------------------------------------------- -" - noremap    <buffer>  <silent>  <LocalLeader>if         :call C_InsertTemplate("idioms.function")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>if    <Esc>:call C_InsertTemplate("idioms.function", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>if    <Esc>:call C_InsertTemplate("idioms.function")<CR> - noremap    <buffer>  <silent>  <LocalLeader>isf        :call C_InsertTemplate("idioms.function-static")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>isf   <Esc>:call C_InsertTemplate("idioms.function-static", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>isf   <Esc>:call C_InsertTemplate("idioms.function-static")<CR> - noremap    <buffer>  <silent>  <LocalLeader>im         :call C_InsertTemplate("idioms.main")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>im    <Esc>:call C_InsertTemplate("idioms.main", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>im    <Esc>:call C_InsertTemplate("idioms.main")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>i0         :call C_CodeFor("up"  , "a")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>i0    <Esc>:call C_CodeFor("up"  , "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>i0    <Esc>:call C_CodeFor("up"  , "a")<CR>i - noremap    <buffer>  <silent>  <LocalLeader>in         :call C_CodeFor("down", "a")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>in    <Esc>:call C_CodeFor("down", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>in    <Esc>:call C_CodeFor("down", "a")<CR>i -" - noremap    <buffer>  <silent>  <LocalLeader>ie         :call C_InsertTemplate("idioms.enum")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>ie    <Esc>:call C_InsertTemplate("idioms.enum"  , "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ie    <Esc>:call C_InsertTemplate("idioms.enum")<CR> - noremap    <buffer>  <silent>  <LocalLeader>is         :call C_InsertTemplate("idioms.struct")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>is    <Esc>:call C_InsertTemplate("idioms.struct", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>is    <Esc>:call C_InsertTemplate("idioms.struct")<CR> - noremap    <buffer>  <silent>  <LocalLeader>iu         :call C_InsertTemplate("idioms.union")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>iu    <Esc>:call C_InsertTemplate("idioms.union" , "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>iu    <Esc>:call C_InsertTemplate("idioms.union")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>ip         :call C_InsertTemplate("idioms.printf")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ip    <Esc>:call C_InsertTemplate("idioms.printf")<CR> - noremap    <buffer>  <silent>  <LocalLeader>isc        :call C_InsertTemplate("idioms.scanf")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>isc   <Esc>:call C_InsertTemplate("idioms.scanf")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>ica        :call C_InsertTemplate("idioms.calloc")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ica   <Esc>:call C_InsertTemplate("idioms.calloc")<CR> - noremap    <buffer>  <silent>  <LocalLeader>ima        :call C_InsertTemplate("idioms.malloc")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ima   <Esc>:call C_InsertTemplate("idioms.malloc")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>isi        :call C_InsertTemplate("idioms.sizeof")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>isi   <Esc>:call C_InsertTemplate("idioms.sizeof")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>isi   <Esc>:call C_InsertTemplate("idioms.sizeof", "v")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>ias        :call C_InsertTemplate("idioms.assert")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>ias   <Esc>:call C_InsertTemplate("idioms.assert", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ias   <Esc>:call C_InsertTemplate("idioms.assert")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>ii         :call C_InsertTemplate("idioms.open-input-file")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ii    <Esc>:call C_InsertTemplate("idioms.open-input-file")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>ii    <Esc>:call C_InsertTemplate("idioms.open-input-file", "v")<CR> - noremap    <buffer>  <silent>  <LocalLeader>io         :call C_InsertTemplate("idioms.open-output-file")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>io    <Esc>:call C_InsertTemplate("idioms.open-output-file")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>io    <Esc>:call C_InsertTemplate("idioms.open-output-file", "v")<CR> -" -" ---------- snippet menu ---------------------------------------------------- -" - noremap    <buffer>  <silent>  <LocalLeader>nr         :call C_CodeSnippet("r")<CR> - noremap    <buffer>  <silent>  <LocalLeader>nw         :call C_CodeSnippet("w")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>nw    <Esc>:call C_CodeSnippet("wv")<CR> - noremap    <buffer>  <silent>  <LocalLeader>ne         :call C_CodeSnippet("e")<CR> -" -inoremap    <buffer>  <silent>  <LocalLeader>nr    <Esc>:call C_CodeSnippet("r")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>nw    <Esc>:call C_CodeSnippet("w")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ne    <Esc>:call C_CodeSnippet("e")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>np         :call C_ProtoPick("n")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>np    <Esc>:call C_ProtoPick("v")<CR> - noremap    <buffer>  <silent>  <LocalLeader>ni         :call C_ProtoInsert()<CR> - noremap    <buffer>  <silent>  <LocalLeader>nc         :call C_ProtoClear()<CR> - noremap    <buffer>  <silent>  <LocalLeader>ns         :call C_ProtoShow()<CR> -" -inoremap    <buffer>  <silent>  <LocalLeader>np    <Esc>:call C_ProtoPick("n")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ni    <Esc>:call C_ProtoInsert()<CR> -inoremap    <buffer>  <silent>  <LocalLeader>nc    <Esc>:call C_ProtoClear()<CR> -inoremap    <buffer>  <silent>  <LocalLeader>ns    <Esc>:call C_ProtoShow()<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>ntl        :call C_EditTemplates("local")<CR> - noremap    <buffer>  <silent>  <LocalLeader>ntg        :call C_EditTemplates("global")<CR> - noremap    <buffer>  <silent>  <LocalLeader>ntr        :call C_RereadTemplates()<CR> - noremap    <buffer>            <LocalLeader>nts   <Esc>:CStyle<Space> -" -" ---------- C++ menu ---------------------------------------------------- -" - noremap    <buffer>  <silent>  <LocalLeader>+co        :call C_InsertTemplate("cpp.cout")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+co   <Esc>:call C_InsertTemplate("cpp.cout")<CR> -" - noremap    <buffer>  <silent>  <LocalLeader>+c         :call C_InsertTemplate("cpp.class-definition")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+c    <Esc>:call C_InsertTemplate("cpp.class-definition")<CR> - noremap    <buffer>  <silent>  <LocalLeader>+cn        :call C_InsertTemplate("cpp.class-using-new-definition")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+cn   <Esc>:call C_InsertTemplate("cpp.class-using-new-definition")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+ci        :call C_InsertTemplate("cpp.class-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+ci   <Esc>:call C_InsertTemplate("cpp.class-implementation")<CR> - noremap    <buffer>  <silent>  <LocalLeader>+cni       :call C_InsertTemplate("cpp.class-using-new-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+cni  <Esc>:call C_InsertTemplate("cpp.class-using-new-implementation")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+mi        :call C_InsertTemplate("cpp.method-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+mi   <Esc>:call C_InsertTemplate("cpp.method-implementation")<CR> - noremap    <buffer>  <silent>  <LocalLeader>+ai        :call C_InsertTemplate("cpp.accessor-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+ai   <Esc>:call C_InsertTemplate("cpp.accessor-implementation")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+tc        :call C_InsertTemplate("cpp.template-class-definition")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tc   <Esc>:call C_InsertTemplate("cpp.template-class-definition")<CR> - noremap    <buffer>  <silent>  <LocalLeader>+tcn       :call C_InsertTemplate("cpp.template-class-using-new-definition")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tcn  <Esc>:call C_InsertTemplate("cpp.template-class-using-new-definition")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+tci       :call C_InsertTemplate("cpp.template-class-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tci  <Esc>:call C_InsertTemplate("cpp.template-class-implementation")<CR> - noremap    <buffer>  <silent>  <LocalLeader>+tcni      :call C_InsertTemplate("cpp.template-class-using-new-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tcni <Esc>:call C_InsertTemplate("cpp.template-class-using-new-implementation")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+tmi       :call C_InsertTemplate("cpp.template-method-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tmi  <Esc>:call C_InsertTemplate("cpp.template-method-implementation")<CR> - noremap    <buffer>  <silent>  <LocalLeader>+tai       :call C_InsertTemplate("cpp.template-accessor-implementation")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tai  <Esc>:call C_InsertTemplate("cpp.template-accessor-implementation")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+tf        :call C_InsertTemplate("cpp.template-function")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tf   <Esc>:call C_InsertTemplate("cpp.template-function")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+ec        :call C_InsertTemplate("cpp.error-class")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+ec   <Esc>:call C_InsertTemplate("cpp.error-class")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+tr        :call C_InsertTemplate("cpp.try-catch")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>+tr   <Esc>:call C_InsertTemplate("cpp.try-catch", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+tr   <Esc>:call C_InsertTemplate("cpp.try-catch")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+ca        :call C_InsertTemplate("cpp.catch")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>+ca   <Esc>:call C_InsertTemplate("cpp.catch", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+ca   <Esc>:call C_InsertTemplate("cpp.catch")<CR> - - noremap    <buffer>  <silent>  <LocalLeader>+c.        :call C_InsertTemplate("cpp.catch-points")<CR> -vnoremap    <buffer>  <silent>  <LocalLeader>+c.   <Esc>:call C_InsertTemplate("cpp.catch-points", "v")<CR> -inoremap    <buffer>  <silent>  <LocalLeader>+c.   <Esc>:call C_InsertTemplate("cpp.catch-points")<CR> -" -" ---------- run menu -------------------------------------------------------- -" - map    <buffer>  <silent>  <LocalLeader>rc         :call C_Compile()<CR>:call C_HlMessage()<CR> - map    <buffer>  <silent>  <LocalLeader>rl         :call C_Link()<CR>:call C_HlMessage()<CR> - map    <buffer>  <silent>  <LocalLeader>rr         :call C_Run()<CR> - map    <buffer>  <silent>  <LocalLeader>ra         :call C_Arguments()<CR> - map    <buffer>  <silent>  <LocalLeader>rm         :call C_Make()<CR> - map    <buffer>  <silent>  <LocalLeader>rg         :call C_MakeArguments()<CR> - map    <buffer>  <silent>  <LocalLeader>rp         :call C_SplintCheck()<CR>:call C_HlMessage()<CR> - map    <buffer>  <silent>  <LocalLeader>ri         :call C_SplintArguments()<CR> - map    <buffer>  <silent>  <LocalLeader>rd         :call C_Indent()<CR> - map    <buffer>  <silent>  <LocalLeader>rh         :call C_Hardcopy("n")<CR> - map    <buffer>  <silent>  <LocalLeader>rs         :call C_Settings()<CR> -" -vmap    <buffer>  <silent>  <LocalLeader>rh    <C-C>:call C_Hardcopy("v")<CR> -" -imap    <buffer>  <silent>  <LocalLeader>rc    <C-C>:call C_Compile()<CR>:call C_HlMessage()<CR> -imap    <buffer>  <silent>  <LocalLeader>rl    <C-C>:call C_Link()<CR>:call C_HlMessage()<CR> -imap    <buffer>  <silent>  <LocalLeader>rr    <C-C>:call C_Run()<CR> -imap    <buffer>  <silent>  <LocalLeader>ra    <C-C>:call C_Arguments()<CR> -imap    <buffer>  <silent>  <LocalLeader>rm    <C-C>:call C_Make()<CR> -imap    <buffer>  <silent>  <LocalLeader>rg    <C-C>:call C_MakeArguments()<CR> -imap    <buffer>  <silent>  <LocalLeader>rp    <C-C>:call C_SplintCheck()<CR>:call C_HlMessage()<CR> -imap    <buffer>  <silent>  <LocalLeader>ri    <C-C>:call C_SplintArguments()<CR> -imap    <buffer>  <silent>  <LocalLeader>rd    <C-C>:call C_Indent()<CR> -imap    <buffer>  <silent>  <LocalLeader>rh    <C-C>:call C_Hardcopy("n")<CR> -imap    <buffer>  <silent>  <LocalLeader>rs    <C-C>:call C_Settings()<CR> - if has("unix") -   map    <buffer>  <silent>  <LocalLeader>rx         :call C_XtermSize()<CR> -  imap    <buffer>  <silent>  <LocalLeader>rx    <C-C>:call C_XtermSize()<CR> - endif - map    <buffer>  <silent>  <LocalLeader>ro         :call C_Toggle_Gvim_Xterm()<CR> -imap    <buffer>  <silent>  <LocalLeader>ro    <C-C>:call C_Toggle_Gvim_Xterm()<CR> -" -" Abraxas CodeCheck (R) -" -if executable("check")  -  map    <buffer>  <silent>  <LocalLeader>rk         :call C_CodeCheck()<CR>:call C_HlMessage()<CR> -  map    <buffer>  <silent>  <LocalLeader>re         :call C_CodeCheckArguments()<CR> - imap    <buffer>  <silent>  <LocalLeader>rk    <C-C>:call C_CodeCheck()<CR>:call C_HlMessage()<CR> - imap    <buffer>  <silent>  <LocalLeader>re    <C-C>:call C_CodeCheckArguments()<CR> -endif -" ---------- plugin help ----------------------------------------------------- -" - map    <buffer>  <silent>  <LocalLeader>hp         :call C_HelpCsupport()<CR> -imap    <buffer>  <silent>  <LocalLeader>hp    <C-C>:call C_HelpCsupport()<CR> - map    <buffer>  <silent>  <LocalLeader>hm         :call C_Help("m")<CR> -imap    <buffer>  <silent>  <LocalLeader>hm    <C-C>:call C_Help("m")<CR> -" -"------------------------------------------------------------------------------- -" additional mapping : complete a classical C comment: '/*' => '/* | */' -"------------------------------------------------------------------------------- -inoremap  <buffer>  /*       /*<Space><Space>*/<Left><Left><Left> -vnoremap  <buffer>  /*      s/*<Space><Space>*/<Left><Left><Left><Esc>p -" -"------------------------------------------------------------------------------- -" additional mapping : complete a classical C multi-line comment:  -"                      '/*<CR>' =>  /* -"                                    * | -"                                    */ -"------------------------------------------------------------------------------- -inoremap  <buffer>  /*<CR>  /*<CR><CR>/<Esc>kA<Space> -" -"------------------------------------------------------------------------------- -" additional mapping : {<CR> always opens a block -"------------------------------------------------------------------------------- -inoremap  <buffer>  {<CR>    {<CR>}<Esc>O -vnoremap  <buffer>  {<CR>   S{<CR>}<Esc>Pk=iB -" -" -if !exists("g:C_Ctrl_j") || ( exists("g:C_Ctrl_j") && g:C_Ctrl_j != 'off' ) -  nmap    <buffer>  <silent>  <C-j>   i<C-R>=C_JumpCtrlJ()<CR> -  imap    <buffer>  <silent>  <C-j>    <C-R>=C_JumpCtrlJ()<CR> -endif diff --git a/.vim/plugin/buftabs.vim b/.vim/plugin/buftabs.vim deleted file mode 100644 index 30edea9..0000000 --- a/.vim/plugin/buftabs.vim +++ /dev/null @@ -1,309 +0,0 @@ -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" buftabs (C) 2006 Ico Doornekamp -" -" This program is free software; you can redistribute it and/or modify it -" under the terms of the GNU General Public License as published by the Free -" Software Foundation; either version 2 of the License, or (at your option) -" any later version. -" -" This program is distributed in the hope that it will be useful, but WITHOUT -" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -" FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for -" more details. -" -" Introduction -" ------------ -" -" This is a simple script that shows a tabs-like list of buffers in the bottom -" of the window. The biggest advantage of this script over various others is -" that it does not take any lines away from your terminal, leaving more space -" for the document you're editing. The tabs are only visible when you need -" them - when you are switchin between buffers. -" -" Usage -" ----- -"  -" This script draws buffer tabs on vim startup, when a new buffer is created -" and when switching between buffers. -" -" It might be handy to create a few maps for easy switching of buffers in your -" .vimrc file. For example, using F1 and F2 keys: -" -"   noremap <f1> :bprev<CR>  -"   noremap <f2> :bnext<CR> -" -" or using control-left and control-right keys: -" -"   :noremap <C-left> :bprev<CR> -"   :noremap <C-right> :bnext<CR> -" -" -" The following extra configuration variables are availabe: -"  -" * g:buftabs_only_basename -" -"   Define this variable to make buftabs only print the filename of each buffer, -"   omitting the preceding directory name. Add to your .vimrc: -" -"   :let g:buftabs_only_basename=1 -" -" -" * g:buftabs_in_statusline -" -"   Define this variable to make the plugin show the buftabs in the statusline -"   instead of the command line. It is a good idea to configure vim to show -"   the statusline as well when only one window is open. Add to your .vimrc: -" -"   set laststatus=2 -"   :let g:buftabs_in_statusline=1 -"     -" -" * g:buftabs_active_highlight_group -" * g:buftabs_inactive_highlight_group -" -"   The name of a highlight group (:help highligh-groups) which is used to -"   show the name of the current active buffer and of all other inactive -"   buffers. If these variables are not defined, no highlighting is used. -"   (Highlighting is only functional when g:buftabs_in_statusline is enabled) -" -"   :let g:buftabs_active_highlight_group="Visual" -" -" -" * g:buftabs_marker_start   [ -" * g:buftabs_marker_end     ] -" * g:buftabs_separator      - -" -"   These strings are drawn around each tab as separators. -" -"   :let g:buftabs_separator = "."   -"   :let g:buftabs_marker_start = "(" -"   :let g:buftabs_marker_end = ")"        -" -" -" Changelog -" --------- -"  -" 0.1  2006-09-22  Initial version  -" -" 0.2  2006-09-22  Better handling when the list of buffers is longer then the -"                  window width. -" -" 0.3  2006-09-27  Some cleanups, set 'hidden' mode by default -" -" 0.4  2007-02-26  Don't draw buftabs until VimEnter event to avoid clutter at -"                  startup in some circumstances -" -" 0.5  2007-02-26  Added option for showing only filenames without directories -"                  in tabs -" -" 0.6  2007-03-04  'only_basename' changed to a global variable.  Removed -"                  functions and add event handlers instead.  'hidden' mode  -"                  broke some things, so is disabled now. Fixed documentation -" -" 0.7  2007-03-07  Added configuration option to show tabs in statusline -"                  instead of cmdline -" -" 0.8  2007-04-02  Update buftabs when leaving insertmode -" -" 0.9  2007-08-22  Now compatible with older Vim versions < 7.0 -" -" 0.10 2008-01-26  Added GPL license -" -" 0.11 2008-02-29  Added optional syntax highlighting to active buffer name -" -" 0.12 2009-03-18  Fixed support for split windows -" -" 0.13 2009-05-07  Store and reuse right-aligned part of original statusline -" -" 0.14 2010-01-28  Fixed bug that caused buftabs in command line being -"                  overwritten when 'hidden' mode is enabled. -"  -" 0.15 2010-02-16  Fixed window width handling bug which caused strange -"                  behaviour in combination with the bufferlist plugin. -"									 Fixed wrong buffer display when deleting last window. -"									 Added extra options for tabs style and highlighting. -" -"	0.16 2010-02-28  Fixed bug causing errors when using buftabs in vim -"                  diff mode. -" -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" - -let w:buftabs_enabled = 0 -let w:original_statusline = matchstr(&statusline, "%=.*") - -" -" Don't bother when in diff mode -" - -if &diff                                       -	finish -endif      - - -" -" Called on VimEnter event -" - -function! Buftabs_enable() -	let w:buftabs_enabled = 1 -endfunction - - -" -" Persistent echo to avoid overwriting of status line when 'hidden' is enabled -"  - -function! Pecho(msg) -	let s:hold_ut=&ut|let &ut=1 -	let s:Pecho=a:msg -	aug Pecho -		au CursorHold * ec s:Pecho -					\|let &ut=s:hold_ut -					\|aug Pecho|exe 'au!'|aug END|aug! Pecho -	aug END -endf - - -" -" Draw the buftabs -" - -function! Buftabs_show(deleted_buf) - -	let l:i = 1 -	let l:list = '' -	let l:start = 0 -	let l:end = 0 -	if ! exists("w:from")  -		let w:from = 0 -	endif - -	if ! exists("w:buftabs_enabled") -		return -	endif - -	" Walk the list of buffers - -	while(l:i <= bufnr('$')) - -		" Only show buffers in the list, and omit help screens -	 -		if buflisted(l:i) && getbufvar(l:i, "&modifiable") && a:deleted_buf != l:i - -			" Get the name of the current buffer, and escape characters that might -			" mess up the statusline - -			if exists("g:buftabs_only_basename") -				let l:name = fnamemodify(bufname(l:i), ":t") -			else -				let l:name = bufname(l:i) -			endif -			let l:name = substitute(l:name, "%", "%%", "g") -			 -			" Append the current buffer number and name to the list. If the buffer -			" is the active buffer, enclose it in some magick characters which will -			" be replaced by markers later. If it is modified, it is appended with -			" an exclaimation mark - -			if winbufnr(winnr()) == l:i -				let l:start = strlen(l:list) -				let l:list = l:list . "\x01" -			else -				let l:list = l:list . ' ' -			endif -				 -      let l:buftabs_separator = "-" -      if exists("g:buftabs_separator") -        let l:buftabs_separator = g:buftabs_separator -      endif - -			let l:list = l:list . l:i . l:buftabs_separator -			let l:list = l:list . l:name - -			if getbufvar(l:i, "&modified") == 1 -				let l:list = l:list . "!" -			endif -			 -			if winbufnr(winnr()) == l:i -				let l:list = l:list . "\x02" -				let l:end = strlen(l:list) -			else -				let l:list = l:list . ' ' -			endif -		end - -		let l:i = l:i + 1 -	endwhile - -	" If the resulting list is too long to fit on the screen, chop -	" out the appropriate part - -	let l:width = winwidth(0) - 12 - -	if(l:start < w:from)  -		let w:from = l:start - 1 -	endif -	if l:end > w:from + l:width -		let w:from = l:end - l:width  -	endif -		 -	let l:list = strpart(l:list, w:from, l:width) - -	" Replace the magic characters by visible markers for highlighting the -	" current buffer. The markers can be simple characters like square brackets, -	" but can also be special codes with highlight groups - -	let l:buftabs_marker_start = "[" -  if exists("g:buftabs_marker_start") -    let l:buftabs_marker_start = g:buftabs_marker_start -  endif - -	let l:buftabs_marker_end = "]" -  if exists("g:buftabs_marker_end") -    let l:buftabs_marker_end = g:buftabs_marker_end -  endif -   -	if exists("g:buftabs_active_highlight_group") -		if exists("g:buftabs_in_statusline") -			let l:buftabs_marker_start = "%#" . g:buftabs_active_highlight_group . "#" . l:buftabs_marker_start -			let l:buftabs_marker_end = l:buftabs_marker_end . "%##" -		end -	end - -	if exists("g:buftabs_inactive_highlight_group") -		if exists("g:buftabs_in_statusline") -			let l:list = '%#' . g:buftabs_inactive_highlight_group . '#' . l:list -			let l:list .= '%##' -			let l:buftabs_marker_end = l:buftabs_marker_end . '%#' . g:buftabs_inactive_highlight_group . '#' -		end -	end - -	let l:list = substitute(l:list, "\x01", l:buftabs_marker_start, 'g') -	let l:list = substitute(l:list, "\x02", l:buftabs_marker_end, 'g') - -	" Show the list. The buftabs_in_statusline variable determines of the list -	" is displayed in the command line (volatile) or in the statusline -	" (persistent) - -	if exists("g:buftabs_in_statusline") -		let &l:statusline = l:list . w:original_statusline -	else -		redraw -		call Pecho(l:list) -	end - -endfunction - - -" Hook to events to show buftabs at startup, when creating and when switching -" buffers - -autocmd VimEnter * call Buftabs_enable() -autocmd VimEnter,BufNew,BufEnter,BufWritePost * call Buftabs_show(-1) -autocmd BufDelete * call Buftabs_show(expand('<abuf>')) -if version >= 700 -	autocmd InsertLeave,VimResized * call Buftabs_show(-1) -end - -" vi: ts=2 sw=2 - diff --git a/.vim/plugin/c.vim b/.vim/plugin/c.vim deleted file mode 100644 index 741764b..0000000 --- a/.vim/plugin/c.vim +++ /dev/null @@ -1,3550 +0,0 @@ -"################################################################################# -" -"       Filename:  c.vim -" -"    Description:  C/C++-IDE. Write programs by inserting complete statements, -"                  comments, idioms, code snippets, templates and comments. -"                  Compile, link and run one-file-programs without a makefile. -"                  See also help file csupport.txt . -" -"   GVIM Version:  7.0+ -" -"  Configuration:  There are some personal details which should be configured -"                   (see the files README.csupport and csupport.txt). -" -"         Author:  Dr.-Ing. Fritz Mehner, FH Südwestfalen, 58644 Iserlohn, Germany -"          Email:  mehner@fh-swf.de -" -"        Version:  see variable  g:C_Version  below -"        Created:  04.11.2000 -"        License:  Copyright (c) 2000-2010, Fritz Mehner -"                  This program is free software; you can redistribute it and/or -"                  modify it under the terms of the GNU General Public License as -"                  published by the Free Software Foundation, version 2 of the -"                  License. -"                  This program is distributed in the hope that it will be -"                  useful, but WITHOUT ANY WARRANTY; without even the implied -"                  warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -"                  PURPOSE. -"                  See the GNU General Public License version 2 for more details. -"       Revision:  $Id: c.vim,v 1.106 2010/02/02 13:24:41 mehner Exp $ -" -"------------------------------------------------------------------------------ -" -if v:version < 700 -  echohl WarningMsg | echo 'The plugin c-support.vim needs Vim version >= 7 .'| echohl None -  finish -endif -" -" Prevent duplicate loading: -" -if exists("g:C_Version") || &cp - finish -endif -let g:C_Version= "5.10"  							" version number of this script; do not change -" -"################################################################################# -" -"  Global variables (with default values) which can be overridden. -" -" Platform specific items:  {{{1 -" - root directory -" - characters that must be escaped for filenames -" -let	s:MSWIN =		has("win16") || has("win32") || has("win64") || has("win95") -" -if	s:MSWIN -	" -  let s:escfilename      = '' -  let s:plugin_dir       = $VIM.'\vimfiles\' -  let s:C_CodeSnippets   = s:plugin_dir.'c-support/codesnippets/' -  let s:C_IndentErrorLog = $HOME.'.indent.errorlog' -	let s:installation	   = 'system' -	" -	let s:C_Display        = '' -	" -else -	" -  let s:escfilename 	= ' \%#[]' -	let s:installation	= 'local' -	" -	" user / system wide installation (Linux/Unix) -	" -	if match( expand("<sfile>"), $VIM ) >= 0 -		" system wide installation -		let s:plugin_dir  = $VIM.'/vimfiles/' -		let s:installation	= 'system' -	else -		" user installation assumed -		let s:plugin_dir  = $HOME.'/.vim/' -	endif -	" -	let s:C_CodeSnippets   = $HOME.'/.vim/c-support/codesnippets/' -	let s:C_IndentErrorLog = $HOME.'/.indent.errorlog' -	" -	let s:C_Display	= system("echo -n $DISPLAY") -	" -endif -"  Use of dictionaries  {{{1 -"  Key word completion is enabled by the filetype plugin 'c.vim' -"  g:C_Dictionary_File  must be global -" -if !exists("g:C_Dictionary_File") -  let g:C_Dictionary_File = s:plugin_dir.'c-support/wordlists/c-c++-keywords.list,'. -        \                   s:plugin_dir.'c-support/wordlists/k+r.list,'. -        \                   s:plugin_dir.'c-support/wordlists/stl_index.list' -endif -" -"  Modul global variables (with default values) which can be overridden. {{{1 -" -if	s:MSWIN -	let s:C_CCompiler           = 'gcc.exe'  " the C   compiler -	let s:C_CplusCompiler       = 'g++.exe'  " the C++ compiler -	let s:C_ExeExtension        = '.exe'     " file extension for executables (leading point required) -	let s:C_ObjExtension        = '.obj'     " file extension for objects (leading point required) -	let s:C_Man                 = 'man.exe'  " the manual program -else -	let s:C_CCompiler           = 'gcc'      " the C   compiler -	let s:C_CplusCompiler       = 'g++'      " the C++ compiler -	let s:C_ExeExtension        = ''         " file extension for executables (leading point required) -	let s:C_ObjExtension        = '.o'       " file extension for objects (leading point required) -	let s:C_Man                 = 'man'      " the manual program -endif -" -let s:C_CExtension     				= 'c'                    " C file extension; everything else is C++ -let s:C_CFlags         				= '-Wall -g -O0 -c'      " compiler flags: compile, don't optimize -let s:C_CodeCheckExeName      = 'check' -let s:C_CodeCheckOptions      = '-K13' -let s:C_LFlags         				= '-Wall -g -O0'         " compiler flags: link   , don't optimize -let s:C_Libs           				= '-lm'                  " libraries to use -let s:C_LineEndCommColDefault = 49 -let s:C_LoadMenus      				= 'yes' -let s:C_MenuHeader     				= 'yes' -let s:C_OutputGvim            = 'vim' -let s:C_Printheader           = "%<%f%h%m%<  %=%{strftime('%x %X')}     Page %N" -let s:C_Root  	       				= '&C\/C\+\+.'           " the name of the root menu of this plugin -let s:C_TypeOfH               = 'cpp' -let s:C_Wrapper               = s:plugin_dir.'c-support/scripts/wrapper.sh' -let s:C_XtermDefaults         = '-fa courier -fs 12 -geometry 80x24' -let s:C_GuiSnippetBrowser     = 'gui'										" gui / commandline -let s:C_GuiTemplateBrowser    = 'gui'										" gui / explorer / commandline -" -let s:C_GlobalTemplateFile    = s:plugin_dir.'c-support/templates/Templates' -let s:C_GlobalTemplateDir     = fnamemodify( s:C_GlobalTemplateFile, ":p:h" ).'/' -let s:C_LocalTemplateFile     = $HOME.'/.vim/c-support/templates/Templates' -let s:C_LocalTemplateDir      = fnamemodify( s:C_LocalTemplateFile, ":p:h" ).'/' -let s:C_TemplateOverwrittenMsg= 'yes' -let s:C_Ctrl_j								 = 'on' -" -let s:C_FormatDate						= '%x' -let s:C_FormatTime						= '%X' -let s:C_FormatYear						= '%Y' -let s:C_SourceCodeExtensions  = 'c cc cp cxx cpp CPP c++ C i ii' -" -"------------------------------------------------------------------------------ -" -"  Look for global variables (if any), to override the defaults. -" -function! C_CheckGlobal ( name ) -  if exists('g:'.a:name) -    exe 'let s:'.a:name.'  = g:'.a:name -  endif -endfunction    " ----------  end of function C_CheckGlobal ---------- -" -call C_CheckGlobal('C_CCompiler              ') -call C_CheckGlobal('C_CExtension             ') -call C_CheckGlobal('C_CFlags                 ') -call C_CheckGlobal('C_CodeCheckExeName       ') -call C_CheckGlobal('C_CodeCheckOptions       ') -call C_CheckGlobal('C_CodeSnippets           ') -call C_CheckGlobal('C_CplusCompiler          ') -call C_CheckGlobal('C_Ctrl_j                 ') -call C_CheckGlobal('C_ExeExtension           ') -call C_CheckGlobal('C_FormatDate             ') -call C_CheckGlobal('C_FormatTime             ') -call C_CheckGlobal('C_FormatYear             ') -call C_CheckGlobal('C_GlobalTemplateFile     ') -call C_CheckGlobal('C_GuiSnippetBrowser      ') -call C_CheckGlobal('C_GuiTemplateBrowser     ') -call C_CheckGlobal('C_IndentErrorLog         ') -call C_CheckGlobal('C_LFlags                 ') -call C_CheckGlobal('C_Libs                   ') -call C_CheckGlobal('C_LineEndCommColDefault  ') -call C_CheckGlobal('C_LoadMenus              ') -call C_CheckGlobal('C_LocalTemplateFile      ') -call C_CheckGlobal('C_Man                    ') -call C_CheckGlobal('C_MenuHeader             ') -call C_CheckGlobal('C_ObjExtension           ') -call C_CheckGlobal('C_OutputGvim             ') -call C_CheckGlobal('C_Printheader            ') -call C_CheckGlobal('C_Root                   ') -call C_CheckGlobal('C_SourceCodeExtensions   ') -call C_CheckGlobal('C_TemplateOverwrittenMsg ') -call C_CheckGlobal('C_TypeOfH                ') -call C_CheckGlobal('C_XtermDefaults          ') -" -"----- some variables for internal use only ----------------------------------- -" -" -" set default geometry if not specified -" -if match( s:C_XtermDefaults, "-geometry\\s\\+\\d\\+x\\d\\+" ) < 0 -	let s:C_XtermDefaults	= s:C_XtermDefaults." -geometry 80x24" -endif -" -" escape the printheader -" -let s:C_Printheader  = escape( s:C_Printheader, ' %' ) -" -let s:C_HlMessage    = "" -" -" characters that must be escaped for filenames -" -let s:C_If0_Counter   = 0 -let s:C_If0_Txt		 		= "If0Label_" -" -let s:C_SplintIsExecutable	= 0 -if executable( "splint" ) -	let s:C_SplintIsExecutable	= 1 -endif -" -let s:C_CodeCheckIsExecutable	= 0 -if executable( s:C_CodeCheckExeName ) -	let s:C_CodeCheckIsExecutable	= 1 -endif -" -"------------------------------------------------------------------------------ -"  Control variables (not user configurable) -"------------------------------------------------------------------------------ -let s:Attribute                = { 'below':'', 'above':'', 'start':'', 'append':'', 'insert':'' } -let s:C_Attribute              = {} -let s:C_ExpansionLimit         = 10 -let s:C_FileVisited            = [] -" -let s:C_MacroNameRegex         = '\([a-zA-Z][a-zA-Z0-9_]*\)' -let s:C_MacroLineRegex				 = '^\s*|'.s:C_MacroNameRegex.'|\s*=\s*\(.*\)' -let s:C_MacroCommentRegex			 = '^\$' -let s:C_ExpansionRegex				 = '|?'.s:C_MacroNameRegex.'\(:\a\)\?|' -let s:C_NonExpansionRegex			 = '|'.s:C_MacroNameRegex.'\(:\a\)\?|' -" -let s:C_TemplateNameDelimiter  = '-+_,\. ' -let s:C_TemplateLineRegex			 = '^==\s*\([a-zA-Z][0-9a-zA-Z'.s:C_TemplateNameDelimiter -let s:C_TemplateLineRegex			.= ']\+\)\s*==\s*\([a-z]\+\s*==\)\?' -let s:C_TemplateIf						 = '^==\s*IF\s\+|STYLE|\s\+IS\s\+'.s:C_MacroNameRegex.'\s*==' -let s:C_TemplateEndif					 = '^==\s*ENDIF\s*==' -" -let s:C_ExpansionCounter       = {} -let s:C_TJT										 = '[ 0-9a-zA-Z_]*' -let s:C_TemplateJumpTarget1    = '<+'.s:C_TJT.'+>\|{+'.s:C_TJT.'+}' -let s:C_TemplateJumpTarget2    = '<-'.s:C_TJT.'->\|{-'.s:C_TJT.'-}' -let s:C_Macro                  = {'|AUTHOR|'         : 'first name surname', -											\						'|AUTHORREF|'      : '', -											\						'|EMAIL|'          : '', -											\						'|COMPANY|'        : '', -											\						'|PROJECT|'        : '', -											\						'|COPYRIGHTHOLDER|': '', -											\						'|STYLE|'          : '' -											\						} -let	s:C_MacroFlag								= {	':l' : 'lowercase'			, -											\							':u' : 'uppercase'			, -											\							':c' : 'capitalize'		, -											\							':L' : 'legalize name'	, -											\						} -let s:C_ActualStyle					= 'default' -let s:C_ActualStyleLast			= s:C_ActualStyle -let s:C_Template             = { 'default' : {} } - -let s:C_ForTypes     = [ -    \ 'char '              , -    \ 'int '               , -    \ 'long int '          , -    \ 'long '              , -    \ 'short int '         , -    \ 'short '             , -    \ 'size_t '            , -    \ 'unsigned char '     , -    \ 'unsigned int '      , -    \ 'unsigned long int ' , -    \ 'unsigned long '     , -    \ 'unsigned short int ',  -    \ 'unsigned short '    ,  -    \ 'unsigned '          ,  -    \ ] - -let s:MsgInsNotAvail	= "insertion not available for a fold"  - -"------------------------------------------------------------------------------ - -let s:C_SourceCodeExtensionsList	= split( s:C_SourceCodeExtensions, '\s\+' ) - -"------------------------------------------------------------------------------ - -"------------------------------------------------------------------------------ -"  C : C_InitMenus                              {{{1 -"  Initialization of C support menus -"------------------------------------------------------------------------------ -" -" the menu names -" -let s:Comments     = s:C_Root.'&Comments' -let s:Statements   = s:C_Root.'&Statements' -let s:Idioms       = s:C_Root.'&Idioms' -let s:Preprocessor = s:C_Root.'&Preprocessor' -let s:Snippets     = s:C_Root.'S&nippets' -let s:Cpp          = s:C_Root.'C&++' -let s:Run          = s:C_Root.'&Run' -" -function! C_InitMenus () -	" -	"=============================================================================================== -	"----- Menu : C main menu entry -------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_Root != "" -		if s:C_MenuHeader == 'yes' -			exe "amenu  ".s:C_Root.'C\/C\+\+    <Nop>' -			exe "amenu  ".s:C_Root.'-Sep00-     <Nop>' -		endif -	endif -	" -	"=============================================================================================== -	"----- Menu : C-Comments --------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu  ".s:C_Root.'&Comments.&Comments<Tab>C\/C\+\+             <Nop>' -		exe "amenu  ".s:C_Root.'&Comments.-Sep00-                            <Nop>' -	endif -	exe "amenu <silent> ".s:Comments.'.end-of-&line\ comment<Tab>\\cl                :call C_LineEndComment( )<CR>' -	exe "vmenu <silent> ".s:Comments.'.end-of-&line\ comment<Tab>\\cl           <Esc>:call C_MultiLineEndComments( )<CR>a' - -	exe "amenu <silent> ".s:Comments.'.ad&just\ end-of-line\ com\.<Tab>\\cj     :call C_AdjustLineEndComm("a")<CR>' -	exe "vmenu <silent> ".s:Comments.'.ad&just\ end-of-line\ com\.<Tab>\\cj     :call C_AdjustLineEndComm("v")<CR>' - -	exe "amenu <silent> ".s:Comments.'.&set\ end-of-line\ com\.\ col\.<Tab>\\cs :call C_GetLineEndCommCol()<CR>' - -	exe "amenu  ".s:Comments.'.-SEP10-                              :' -	exe "amenu <silent> ".s:Comments.'.code\ ->\ comment\ \/&*\ *\/<Tab>\\c*   		 :call C_CodeComment("a","yes")<CR>:nohlsearch<CR>j' -	exe "vmenu <silent> ".s:Comments.'.code\ ->\ comment\ \/&*\ *\/<Tab>\\c*  	<Esc>:call C_CodeComment("v","yes")<CR>:nohlsearch<CR>j' -	exe "amenu <silent> ".s:Comments.'.code\ ->\ comment\ &\/\/<Tab>\\cc            :call C_CodeComment("a","no")<CR>:nohlsearch<CR>j' -	exe "vmenu <silent> ".s:Comments.'.code\ ->\ comment\ &\/\/<Tab>\\cc       <Esc>:call C_CodeComment("v","no")<CR>:nohlsearch<CR>j' -	exe "amenu <silent> ".s:Comments.'.c&omment\ ->\ code<Tab>\\co                  :call C_CommentCode("a")<CR>:nohlsearch<CR>' -	exe "vmenu <silent> ".s:Comments.'.c&omment\ ->\ code<Tab>\\co                  :call C_CommentCode("v")<CR>:nohlsearch<CR>' - -	exe "amenu          ".s:Comments.'.-SEP0-                        :' -	exe "amenu <silent> ".s:Comments.'.&frame\ comment<Tab>\\cfr                 :call C_InsertTemplate("comment.frame")<CR>' -	exe "amenu <silent> ".s:Comments.'.f&unction\ description<Tab>\\cfu          :call C_InsertTemplate("comment.function")<CR>' -	exe "amenu          ".s:Comments.'.-SEP1-                        :' -	exe "amenu <silent> ".s:Comments.'.&method\ description<Tab>\\cme            :call C_InsertTemplate("comment.method")<CR>' -	exe "amenu <silent> ".s:Comments.'.cl&ass\ description<Tab>\\ccl             :call C_InsertTemplate("comment.class")<CR>' -	exe "amenu          ".s:Comments.'.-SEP2-                        :' -	exe "amenu <silent> ".s:Comments.'.file\ description\ \(impl\.\)<Tab>\\cfdi  :call C_InsertTemplate("comment.file-description")<CR>' -	exe "amenu <silent> ".s:Comments.'.file\ description\ \(header\)<Tab>\\cfdh  :call C_InsertTemplate("comment.file-description-header")<CR>' -	exe "amenu          ".s:Comments.'.-SEP3-                        :' -	" -	"----- Submenu : C-Comments : file sections  ------------------------------------------------------------- -	" -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.file\ sections<Tab>C\/C\+\+            <Nop>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.-Sep0-                                 <Nop>' -	" -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.&Header\ File\ Includes  :call C_InsertTemplate("comment.file-section-cpp-header-includes")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.Local\ &Macros           :call C_InsertTemplate("comment.file-section-cpp-macros")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.Local\ &Type\ Def\.      :call C_InsertTemplate("comment.file-section-cpp-typedefs")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.Local\ &Data\ Types      :call C_InsertTemplate("comment.file-section-cpp-data-types")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.Local\ &Variables        :call C_InsertTemplate("comment.file-section-cpp-local-variables")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.Local\ &Prototypes       :call C_InsertTemplate("comment.file-section-cpp-prototypes")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.&Exp\.\ Function\ Def\.  :call C_InsertTemplate("comment.file-section-cpp-function-defs-exported")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.&Local\ Function\ Def\.  :call C_InsertTemplate("comment.file-section-cpp-function-defs-local")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.-SEP6-                   :' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.Local\ &Class\ Def\.     :call C_InsertTemplate("comment.file-section-cpp-class-defs")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.E&xp\.\ Class\ Impl\.    :call C_InsertTemplate("comment.file-section-cpp-class-implementations-exported")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.L&ocal\ Class\ Impl\.    :call C_InsertTemplate("comment.file-section-cpp-class-implementations-local")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.-SEP7-                   :' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.&All\ sections,\ C       :call C_Comment_C_SectionAll("c")<CR>' -	exe "amenu  ".s:Comments.'.&C\/C\+\+-file\ sections<Tab>\\ccs.All\ §ions,\ C++     :call C_Comment_C_SectionAll("cpp")<CR>' -	" -	"----- Submenu : H-Comments : file sections  ------------------------------------------------------------- -	" -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.H-file\ sections<Tab>C\/C\+\+  <Nop>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.-Sep0-                         <Nop>' -	"' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.&Header\ File\ Includes    :call C_InsertTemplate("comment.file-section-hpp-header-includes")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.Exported\ &Macros          :call C_InsertTemplate("comment.file-section-hpp-macros")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.Exported\ &Type\ Def\.     :call C_InsertTemplate("comment.file-section-hpp-exported-typedefs")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.Exported\ &Data\ Types     :call C_InsertTemplate("comment.file-section-hpp-exported-data-types")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.Exported\ &Variables       :call C_InsertTemplate("comment.file-section-hpp-exported-variables")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.Exported\ &Funct\.\ Decl\. :call C_InsertTemplate("comment.file-section-hpp-exported-function-declarations")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.-SEP4-                     :' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.E&xported\ Class\ Def\.    :call C_InsertTemplate("comment.file-section-hpp-exported-class-defs")<CR>' - -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.-SEP5-                     :' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.&All\ sections,\ C         :call C_Comment_H_SectionAll("c")<CR>' -	exe "amenu  ".s:Comments.'.&H-file\ sections<Tab>\\chs.All\ §ions,\ C++       :call C_Comment_H_SectionAll("cpp")<CR>' -	" -	exe "amenu  ".s:Comments.'.-SEP8-                        :' -	" -	"----- Submenu : C-Comments : keyword comments  ---------------------------------------------------------- -	" -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.keyw\.+comm\.<Tab>C\/C\+\+   <Nop>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.-Sep0-            						<Nop>' -" -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&BUG\:               $:call C_InsertTemplate("comment.keyword-bug")<CR>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&COMPILER\:          $:call C_InsertTemplate("comment.keyword-compiler")<CR>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&TODO\:              $:call C_InsertTemplate("comment.keyword-todo")<CR>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:T&RICKY\:            $:call C_InsertTemplate("comment.keyword-tricky")<CR>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&WARNING\:           $:call C_InsertTemplate("comment.keyword-warning")<CR>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:W&ORKAROUND\:        $:call C_InsertTemplate("comment.keyword-workaround")<CR>' -	exe "amenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&new\ keyword\:      $:call C_InsertTemplate("comment.keyword-keyword")<CR>' -" -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&BUG\:          <Esc>$:call C_InsertTemplate("comment.keyword-bug")<CR>' -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&COMPILER\:     <Esc>$:call C_InsertTemplate("comment.keyword-compiler")<CR>' -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&TODO\:         <Esc>$:call C_InsertTemplate("comment.keyword-todo")<CR>' -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:T&RICKY\:       <Esc>$:call C_InsertTemplate("comment.keyword-tricky")<CR>' -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&WARNING\:      <Esc>$:call C_InsertTemplate("comment.keyword-warning")<CR>' -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:W&ORKAROUND\:   <Esc>$:call C_InsertTemplate("comment.keyword-workaround")<CR>' -	exe "imenu  ".s:Comments.'.&keyword\ comm\.<Tab>\\ckc.\:&new\ keyword\: <Esc>$:call C_InsertTemplate("comment.keyword-keyword")<CR>' -	" -	"----- Submenu : C-Comments : special comments  ---------------------------------------------------------- -	" -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.special\ comm\.<Tab>C\/C\+\+  <Nop>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.-Sep0-                				<Nop>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&EMPTY                													$:call C_InsertTemplate("comment.special-empty")<CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&FALL\ THROUGH        													$:call C_InsertTemplate("comment.special-fall-through")             <CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&IMPL\.\ TYPE\ CONV   													$:call C_InsertTemplate("comment.special-implicit-type-conversion") <CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&NO\ RETURN           													$:call C_InsertTemplate("comment.special-no-return")                <CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.NOT\ &REACHED         													$:call C_InsertTemplate("comment.special-not-reached")              <CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&TO\ BE\ IMPL\.       													$:call C_InsertTemplate("comment.special-remains-to-be-implemented")<CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.-SEP81-               :' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.constant\ type\ is\ &long\ (L)              		$:call C_InsertTemplate("comment.special-constant-type-is-long")<CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.constant\ type\ is\ &unsigned\ (U)          		$:call C_InsertTemplate("comment.special-constant-type-is-unsigned")<CR>' -	exe "amenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.constant\ type\ is\ unsigned\ l&ong\ (UL)   		$:call C_InsertTemplate("comment.special-constant-type-is-unsigned-long")<CR>' -	" -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&EMPTY                										 <Esc>$:call C_InsertTemplate("comment.special-empty")<CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&FALL\ THROUGH        										 <Esc>$:call C_InsertTemplate("comment.special-fall-through")             <CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&IMPL\.\ TYPE\ CONV   										 <Esc>$:call C_InsertTemplate("comment.special-implicit-type-conversion") <CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&NO\ RETURN           										 <Esc>$:call C_InsertTemplate("comment.special-no-return")                <CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.NOT\ &REACHED         										 <Esc>$:call C_InsertTemplate("comment.special-not-reached")              <CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.&TO\ BE\ IMPL\.       										 <Esc>$:call C_InsertTemplate("comment.special-remains-to-be-implemented")<CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.-SEP81-               :' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.constant\ type\ is\ &long\ (L)             <Esc>$:call C_InsertTemplate("comment.special-constant-type-is-long")<CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.constant\ type\ is\ &unsigned\ (U)         <Esc>$:call C_InsertTemplate("comment.special-constant-type-is-unsigned")<CR>' -	exe "imenu  ".s:Comments.'.&special\ comm\.<Tab>\\ckc.constant\ type\ is\ unsigned\ l&ong\ (UL)  <Esc>$:call C_InsertTemplate("comment.special-constant-type-is-unsigned-long")<CR>' -	" -	"----- Submenu : C-Comments : Tags  ---------------------------------------------------------- -	" -	exe "amenu  ".s:Comments.'.ta&gs\ (plugin).tags\ (plugin)<Tab>C\/C\+\+    <Nop>' -	exe "amenu  ".s:Comments.'.ta&gs\ (plugin).-Sep0-            							<Nop>' -	" -	exe "anoremenu  ".s:Comments.'.ta&gs\ (plugin).&AUTHOR                :call C_InsertMacroValue("AUTHOR")<CR>' -	exe "anoremenu  ".s:Comments.'.ta&gs\ (plugin).AUTHOR&REF             :call C_InsertMacroValue("AUTHORREF")<CR>' -	exe "anoremenu  ".s:Comments.'.ta&gs\ (plugin).&COMPANY               :call C_InsertMacroValue("COMPANY")<CR>' -	exe "anoremenu  ".s:Comments.'.ta&gs\ (plugin).C&OPYRIGHTHOLDER       :call C_InsertMacroValue("COPYRIGHTHOLDER")<CR>' -	exe "anoremenu  ".s:Comments.'.ta&gs\ (plugin).&EMAIL                 :call C_InsertMacroValue("EMAIL")<CR>' -	exe "anoremenu  ".s:Comments.'.ta&gs\ (plugin).&PROJECT               :call C_InsertMacroValue("PROJECT")<CR>' -	" -	exe "inoremenu  ".s:Comments.'.ta&gs\ (plugin).&AUTHOR           <Esc>:call C_InsertMacroValue("AUTHOR")<CR>a' -	exe "inoremenu  ".s:Comments.'.ta&gs\ (plugin).AUTHOR&REF        <Esc>:call C_InsertMacroValue("AUTHORREF")<CR>a' -	exe "inoremenu  ".s:Comments.'.ta&gs\ (plugin).&COMPANY          <Esc>:call C_InsertMacroValue("COMPANY")<CR>a' -	exe "inoremenu  ".s:Comments.'.ta&gs\ (plugin).C&OPYRIGHTHOLDER  <Esc>:call C_InsertMacroValue("COPYRIGHTHOLDER")<CR>a' -	exe "inoremenu  ".s:Comments.'.ta&gs\ (plugin).&EMAIL            <Esc>:call C_InsertMacroValue("EMAIL")<CR>a' -	exe "inoremenu  ".s:Comments.'.ta&gs\ (plugin).&PROJECT          <Esc>:call C_InsertMacroValue("PROJECT")<CR>a' -	" -	exe "vnoremenu  ".s:Comments.'.ta&gs\ (plugin).&AUTHOR          s<Esc>:call C_InsertMacroValue("AUTHOR")<CR>a' -	exe "vnoremenu  ".s:Comments.'.ta&gs\ (plugin).AUTHOR&REF       s<Esc>:call C_InsertMacroValue("AUTHORREF")<CR>a' -	exe "vnoremenu  ".s:Comments.'.ta&gs\ (plugin).&COMPANY         s<Esc>:call C_InsertMacroValue("COMPANY")<CR>a' -	exe "vnoremenu  ".s:Comments.'.ta&gs\ (plugin).C&OPYRIGHTHOLDER s<Esc>:call C_InsertMacroValue("COPYRIGHTHOLDER")<CR>a' -	exe "vnoremenu  ".s:Comments.'.ta&gs\ (plugin).&EMAIL           s<Esc>:call C_InsertMacroValue("EMAIL")<CR>a' -	exe "vnoremenu  ".s:Comments.'.ta&gs\ (plugin).&PROJECT         s<Esc>:call C_InsertMacroValue("PROJECT")<CR>a' -	" -	" -	exe "amenu  ".s:Comments.'.-SEP9-                     :' -	" -	exe " menu  ".s:Comments.'.&date<Tab>\\cd                       <Esc>:call C_InsertDateAndTime("d")<CR>' -	exe "imenu  ".s:Comments.'.&date<Tab>\\cd                       <Esc>:call C_InsertDateAndTime("d")<CR>a' -	exe "vmenu  ".s:Comments.'.&date<Tab>\\cd                      s<Esc>:call C_InsertDateAndTime("d")<CR>a' -	exe " menu  ".s:Comments.'.date\ &time<Tab>\\ct                 <Esc>:call C_InsertDateAndTime("dt")<CR>' -	exe "imenu  ".s:Comments.'.date\ &time<Tab>\\ct                 <Esc>:call C_InsertDateAndTime("dt")<CR>a' -	exe "vmenu  ".s:Comments.'.date\ &time<Tab>\\ct                s<Esc>:call C_InsertDateAndTime("dt")<CR>a' - -	exe "amenu  ".s:Comments.'.-SEP12-                    :' -	exe "amenu <silent> ".s:Comments.'.\/\/\ xxx\ \ \ \ \ &->\ \ \/*\ xxx\ *\/    :call C_CommentCppToC()<CR>' -	exe "vmenu <silent> ".s:Comments.'.\/\/\ xxx\ \ \ \ \ &->\ \ \/*\ xxx\ *\/    <Esc>:'."'<,'>".'call C_CommentCppToC()<CR>' -	exe "amenu <silent> ".s:Comments.'.\/*\ xxx\ *\/\ \ -&>\ \ \/\/\ xxx          :call C_CommentCToCpp()<CR>' -	exe "vmenu <silent> ".s:Comments.'.\/*\ xxx\ *\/\ \ -&>\ \ \/\/\ xxx          <Esc>:'."'<,'>".'call C_CommentCToCpp()<CR>' -	" -	"=============================================================================================== -	"----- Menu : C-Statements-------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu  ".s:Statements.'.&Statements<Tab>C\/C\+\+     <Nop>' -		exe "amenu  ".s:Statements.'.-Sep00-                      <Nop>' -	endif -	" -	exe "amenu <silent>".s:Statements.'.&do\ \{\ \}\ while<Tab>\\sd               :call C_InsertTemplate("statements.do-while")<CR>' -	exe "vmenu <silent>".s:Statements.'.&do\ \{\ \}\ while<Tab>\\sd          <Esc>:call C_InsertTemplate("statements.do-while", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.&do\ \{\ \}\ while<Tab>\\sd          <Esc>:call C_InsertTemplate("statements.do-while")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.f&or<Tab>\\sf                             :call C_InsertTemplate("statements.for")<CR>' -	exe "imenu <silent>".s:Statements.'.f&or<Tab>\\sf                        <Esc>:call C_InsertTemplate("statements.for")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.fo&r\ \{\ \}<Tab>\\sfo                    :call C_InsertTemplate("statements.for-block")<CR>' -	exe "vmenu <silent>".s:Statements.'.fo&r\ \{\ \}<Tab>\\sfo               <Esc>:call C_InsertTemplate("statements.for-block", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.fo&r\ \{\ \}<Tab>\\sfo               <Esc>:call C_InsertTemplate("statements.for-block")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.&if<Tab>\\si                              :call C_InsertTemplate("statements.if")<CR>' -	exe "imenu <silent>".s:Statements.'.&if<Tab>\\si                         <Esc>:call C_InsertTemplate("statements.if")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.i&f\ \{\ \}<Tab>\\sif                     :call C_InsertTemplate("statements.if-block")<CR>' -	exe "vmenu <silent>".s:Statements.'.i&f\ \{\ \}<Tab>\\sif                <Esc>:call C_InsertTemplate("statements.if-block", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.i&f\ \{\ \}<Tab>\\sif                <Esc>:call C_InsertTemplate("statements.if-block")<CR>' - -	exe "amenu <silent>".s:Statements.'.if\ &else<Tab>\\sie                       :call C_InsertTemplate("statements.if-else")<CR>' -	exe "vmenu <silent>".s:Statements.'.if\ &else<Tab>\\sie                  <Esc>:call C_InsertTemplate("statements.if-else", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.if\ &else<Tab>\\sie                  <Esc>:call C_InsertTemplate("statements.if-else")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.if\ \{\ \}\ e&lse\ \{\ \}<Tab>\\sife      :call C_InsertTemplate("statements.if-block-else")<CR>' -	exe "vmenu <silent>".s:Statements.'.if\ \{\ \}\ e&lse\ \{\ \}<Tab>\\sife <Esc>:call C_InsertTemplate("statements.if-block-else", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.if\ \{\ \}\ e&lse\ \{\ \}<Tab>\\sife <Esc>:call C_InsertTemplate("statements.if-block-else")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.&else\ \{\ \}<Tab>\\se                    :call C_InsertTemplate("statements.else-block")<CR>' -	exe "vmenu <silent>".s:Statements.'.&else\ \{\ \}<Tab>\\se               <Esc>:call C_InsertTemplate("statements.else-block", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.&else\ \{\ \}<Tab>\\se               <Esc>:call C_InsertTemplate("statements.else-block")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.&while<Tab>\\sw                           :call C_InsertTemplate("statements.while")<CR>' -	exe "imenu <silent>".s:Statements.'.&while<Tab>\\sw                      <Esc>:call C_InsertTemplate("statements.while")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.w&hile\ \{\ \}<Tab>\\swh                  :call C_InsertTemplate("statements.while-block")<CR>' -	exe "vmenu <silent>".s:Statements.'.w&hile\ \{\ \}<Tab>\\swh             <Esc>:call C_InsertTemplate("statements.while-block", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.w&hile\ \{\ \}<Tab>\\swh             <Esc>:call C_InsertTemplate("statements.while-block")<CR>' -	" -	exe "amenu <silent>".s:Statements.'.&switch\ \{\ \}<Tab>\\ss                  :call C_InsertTemplate("statements.switch")<CR>' -	exe "vmenu <silent>".s:Statements.'.&switch\ \{\ \}<Tab>\\ss             <Esc>:call C_InsertTemplate("statements.switch", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.&switch\ \{\ \}<Tab>\\ss             <Esc>:call C_InsertTemplate("statements.switch")<CR>' -	" -	exe "amenu  ".s:Statements.'.&case\ \.\.\.\ break<Tab>\\sc                    :call C_InsertTemplate("statements.case")<CR>' -	exe "imenu  ".s:Statements.'.&case\ \.\.\.\ break<Tab>\\sc               <Esc>:call C_InsertTemplate("statements.case")<CR>' -	" -	" -	exe "amenu <silent>".s:Statements.'.&\{\ \}<Tab>\\sb                          :call C_InsertTemplate("statements.block")<CR>' -	exe "vmenu <silent>".s:Statements.'.&\{\ \}<Tab>\\sb                     <Esc>:call C_InsertTemplate("statements.block", "v")<CR>' -	exe "imenu <silent>".s:Statements.'.&\{\ \}<Tab>\\sb                     <Esc>:call C_InsertTemplate("statements.block")<CR>' -	" -	" -	"=============================================================================================== -	"----- Menu : C-Idioms ----------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu          ".s:Idioms.'.&Idioms<Tab>C\/C\+\+      <Nop>' -		exe "amenu          ".s:Idioms.'.-Sep00-                   <Nop>' -	endif -	exe "amenu <silent> ".s:Idioms.'.&function<Tab>\\if                        :call C_InsertTemplate("idioms.function")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.&function<Tab>\\if                   <Esc>:call C_InsertTemplate("idioms.function", "v")<CR>' -	exe "imenu <silent> ".s:Idioms.'.&function<Tab>\\if                   <Esc>:call C_InsertTemplate("idioms.function")<CR>' -	exe "amenu <silent> ".s:Idioms.'.s&tatic\ function<Tab>\\isf               :call C_InsertTemplate("idioms.function-static")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.s&tatic\ function<Tab>\\isf          <Esc>:call C_InsertTemplate("idioms.function-static", "v")<CR>' -	exe "imenu <silent> ".s:Idioms.'.s&tatic\ function<Tab>\\isf          <Esc>:call C_InsertTemplate("idioms.function-static")<CR>' -	exe "amenu <silent> ".s:Idioms.'.&main<Tab>\\im                            :call C_InsertTemplate("idioms.main")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.&main<Tab>\\im                       <Esc>:call C_InsertTemplate("idioms.main", "v")<CR>' -	exe "imenu <silent> ".s:Idioms.'.&main<Tab>\\im                      <Esc>:call C_InsertTemplate("idioms.main")<CR>' - -	exe "amenu          ".s:Idioms.'.-SEP1-                      :' -	exe "amenu          ".s:Idioms.'.for(x=&0;\ x<n;\ x\+=1)<Tab>\\i0          :call C_CodeFor("up"  , "a")<CR>' -	exe "vmenu          ".s:Idioms.'.for(x=&0;\ x<n;\ x\+=1)<Tab>\\i0     <Esc>:call C_CodeFor("up"  , "v")<CR>' -	exe "imenu          ".s:Idioms.'.for(x=&0;\ x<n;\ x\+=1)<Tab>\\i0     <Esc>:call C_CodeFor("up"  , "a")<CR>i' -	exe "amenu          ".s:Idioms.'.for(x=&n-1;\ x>=0;\ x\-=1)<Tab>\\in       :call C_CodeFor("down", "a")<CR>' -	exe "vmenu          ".s:Idioms.'.for(x=&n-1;\ x>=0;\ x\-=1)<Tab>\\in  <Esc>:call C_CodeFor("down", "v")<CR>' -	exe "imenu          ".s:Idioms.'.for(x=&n-1;\ x>=0;\ x\-=1)<Tab>\\in  <Esc>:call C_CodeFor("down", "a")<CR>i' - -	exe "amenu          ".s:Idioms.'.-SEP2-                      :' -	exe "amenu <silent> ".s:Idioms.'.&enum<Tab>\\ie                            :call C_InsertTemplate("idioms.enum")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.&enum<Tab>\\ie                       <Esc>:call C_InsertTemplate("idioms.enum"  , "v")<CR>' -	exe "imenu <silent> ".s:Idioms.'.&enum<Tab>\\ie                       <Esc>:call C_InsertTemplate("idioms.enum"  )<CR>' -	exe "amenu <silent> ".s:Idioms.'.&struct<Tab>\\is                          :call C_InsertTemplate("idioms.struct")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.&struct<Tab>\\is                     <Esc>:call C_InsertTemplate("idioms.struct", "v")<CR>' -	exe "imenu <silent> ".s:Idioms.'.&struct<Tab>\\is                     <Esc>:call C_InsertTemplate("idioms.struct")<CR>' -	exe "amenu <silent> ".s:Idioms.'.&union<Tab>\\iu                           :call C_InsertTemplate("idioms.union")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.&union<Tab>\\iu                      <Esc>:call C_InsertTemplate("idioms.union" , "v")<CR>' -	exe "imenu <silent> ".s:Idioms.'.&union<Tab>\\iu                      <Esc>:call C_InsertTemplate("idioms.union" )<CR>' -	exe "amenu          ".s:Idioms.'.-SEP3-                      :' -	" -	exe "amenu <silent> ".s:Idioms.'.scanf<Tab>\\isc                            :call C_InsertTemplate("idioms.scanf")<CR>' -	exe "imenu <silent> ".s:Idioms.'.scanf<Tab>\\isc                       <Esc>:call C_InsertTemplate("idioms.scanf")<CR>' -	exe "amenu <silent> ".s:Idioms.'.printf<Tab>\\ip                            :call C_InsertTemplate("idioms.printf")<CR>' -	exe "imenu <silent> ".s:Idioms.'.printf<Tab>\\ip                       <Esc>:call C_InsertTemplate("idioms.printf")<CR>' -	" -	exe "amenu          ".s:Idioms.'.-SEP4-                       :' -	exe "amenu <silent> ".s:Idioms.'.p=ca&lloc\(n,sizeof(type)\)<Tab>\\ica      :call C_InsertTemplate("idioms.calloc")<CR>' -	exe "imenu <silent> ".s:Idioms.'.p=ca&lloc\(n,sizeof(type)\)<Tab>\\ica <Esc>:call C_InsertTemplate("idioms.calloc")<CR>' -	exe "amenu <silent> ".s:Idioms.'.p=m&alloc\(sizeof(type)\)<Tab>\\ima        :call C_InsertTemplate("idioms.malloc")<CR>' -	exe "imenu <silent> ".s:Idioms.'.p=m&alloc\(sizeof(type)\)<Tab>\\ima   <Esc>:call C_InsertTemplate("idioms.malloc")<CR>' -	" -	exe "anoremenu <silent> ".s:Idioms.'.si&zeof(\ \)<Tab>\\isi                 :call C_InsertTemplate("idioms.sizeof")<CR>' -	exe "inoremenu <silent> ".s:Idioms.'.si&zeof(\ \)<Tab>\\isi            <Esc>:call C_InsertTemplate("idioms.sizeof")<CR>' -	exe "vnoremenu <silent> ".s:Idioms.'.si&zeof(\ \)<Tab>\\isi            <Esc>:call C_InsertTemplate("idioms.sizeof", "v")<CR>' -	" -	exe "anoremenu <silent> ".s:Idioms.'.asse&rt(\ \)<Tab>\\ias                 :call C_InsertTemplate("idioms.assert")<CR>' -	exe "inoremenu <silent> ".s:Idioms.'.asse&rt(\ \)<Tab>\\ias            <Esc>:call C_InsertTemplate("idioms.assert")<CR>' -	exe "vnoremenu <silent> ".s:Idioms.'.asse&rt(\ \)<Tab>\\ias            <Esc>:call C_InsertTemplate("idioms.assert", "v")<CR>' - -	exe "amenu          ".s:Idioms.'.-SEP5-                      :' -	exe "amenu <silent> ".s:Idioms.'.open\ &input\ file<Tab>\\ii               :call C_InsertTemplate("idioms.open-input-file")<CR>' -	exe "imenu <silent> ".s:Idioms.'.open\ &input\ file<Tab>\\ii          <Esc>:call C_InsertTemplate("idioms.open-input-file")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.open\ &input\ file<Tab>\\ii          <Esc>:call C_InsertTemplate("idioms.open-input-file", "v")<CR>' -	exe "amenu <silent> ".s:Idioms.'.open\ &output\ file<Tab>\\io              :call C_InsertTemplate("idioms.open-output-file")<CR>' -	exe "imenu <silent> ".s:Idioms.'.open\ &output\ file<Tab>\\io         <Esc>:call C_InsertTemplate("idioms.open-output-file")<CR>' -	exe "vmenu <silent> ".s:Idioms.'.open\ &output\ file<Tab>\\io         <Esc>:call C_InsertTemplate("idioms.open-output-file", "v")<CR>' -	" -	exe "amenu <silent> ".s:Idioms.'.fscanf                           :call C_InsertTemplate("idioms.fscanf")<CR>' -	exe "imenu <silent> ".s:Idioms.'.fscanf                      <Esc>:call C_InsertTemplate("idioms.fscanf")<CR>' -	exe "amenu <silent> ".s:Idioms.'.fprintf                          :call C_InsertTemplate("idioms.fprintf")<CR>' -	exe "imenu <silent> ".s:Idioms.'.fprintf                     <Esc>:call C_InsertTemplate("idioms.fprintf")<CR>' -	" -	"=============================================================================================== -	"----- Menu : C-Preprocessor ----------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu  ".s:Preprocessor.'.&Preprocessor<Tab>C\/C\+\+   <Nop>' -		exe "amenu  ".s:Preprocessor.'.-Sep00-                      <Nop>' -	endif -	" -	"----- Submenu : C-Idioms: standard library ------------------------------------------------------- -	"' -	exe "amenu           ".s:Preprocessor.'.#include\ &Std\.Lib\.<Tab>\\ps.Std\.Lib\.<Tab>C\/C\+\+  <Nop>' -	exe "amenu           ".s:Preprocessor.'.#include\ &Std\.Lib\.<Tab>\\ps.-Sep0-         					<Nop>' -	call C_CIncludeMenus ( s:Preprocessor.'.#include\ &Std\.Lib\.<Tab>\\ps', s:C_StandardLibs ) -	" -	exe "anoremenu       ".s:Preprocessor.'.#include\ C&99<Tab>\\pc.C99<Tab>C\/C\+\+         		<Nop>' -	exe "anoremenu       ".s:Preprocessor.'.#include\ C&99<Tab>\\pc.-Sep0-                			<Nop>' -	call C_CIncludeMenus ( s:Preprocessor.'.#include\ C&99<Tab>\\pc', s:C_C99Libs ) -	" -	exe "amenu  ".s:Preprocessor.'.-SEP2-                        :' -	exe "anoremenu  ".s:Preprocessor.'.#include\ &\<\.\.\.\><Tab>\\p<           :call C_InsertTemplate("preprocessor.include-global")<CR>' -	exe "inoremenu  ".s:Preprocessor.'.#include\ &\<\.\.\.\><Tab>\\p<      <Esc>:call C_InsertTemplate("preprocessor.include-global")<CR>' -	exe "anoremenu  ".s:Preprocessor.'.#include\ &\"\.\.\.\"<Tab>\\p"           :call C_InsertTemplate("preprocessor.include-local")<CR>' -	exe "inoremenu  ".s:Preprocessor.'.#include\ &\"\.\.\.\"<Tab>\\p"      <Esc>:call C_InsertTemplate("preprocessor.include-local")<CR>' -	exe "amenu  ".s:Preprocessor.'.#&define<Tab>\\pd                            :call C_InsertTemplate("preprocessor.define")<CR>' -	exe "imenu  ".s:Preprocessor.'.#&define<Tab>\\pd                       <Esc>:call C_InsertTemplate("preprocessor.define")<CR>' -	exe "amenu  ".s:Preprocessor.'.&#undef<Tab>\\pu                             :call C_InsertTemplate("preprocessor.undefine")<CR>' -	exe "imenu  ".s:Preprocessor.'.&#undef<Tab>\\pu                        <Esc>:call C_InsertTemplate("preprocessor.undefine")<CR>' -	" -	exe "amenu  ".s:Preprocessor.'.#&if\ #else\ #endif<Tab>\\pie                 :call C_InsertTemplate("preprocessor.if-else-endif")<CR>' -	exe "imenu  ".s:Preprocessor.'.#&if\ #else\ #endif<Tab>\\pie            <Esc>:call C_InsertTemplate("preprocessor.if-else-endif")<CR>' -	exe "vmenu  ".s:Preprocessor.'.#&if\ #else\ #endif<Tab>\\pie            <Esc>:call C_InsertTemplate("preprocessor.if-else-endif", "v")<CR>' -	exe "amenu  ".s:Preprocessor.'.#i&fdef\ #else\ #endif<Tab>\\pid              :call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR>' -	exe "imenu  ".s:Preprocessor.'.#i&fdef\ #else\ #endif<Tab>\\pid         <Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif")<CR>' -	exe "vmenu  ".s:Preprocessor.'.#i&fdef\ #else\ #endif<Tab>\\pid         <Esc>:call C_InsertTemplate("preprocessor.ifdef-else-endif", "v")<CR>' -	exe "amenu  ".s:Preprocessor.'.#if&ndef\ #else\ #endif<Tab>\\pin             :call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR>' -	exe "imenu  ".s:Preprocessor.'.#if&ndef\ #else\ #endif<Tab>\\pin        <Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif")<CR>' -	exe "vmenu  ".s:Preprocessor.'.#if&ndef\ #else\ #endif<Tab>\\pin        <Esc>:call C_InsertTemplate("preprocessor.ifndef-else-endif", "v")<CR>' -	exe "amenu  ".s:Preprocessor.'.#ifnd&ef\ #def\ #endif<Tab>\\pind             :call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR>' -	exe "imenu  ".s:Preprocessor.'.#ifnd&ef\ #def\ #endif<Tab>\\pind        <Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif")<CR>' -	exe "vmenu  ".s:Preprocessor.'.#ifnd&ef\ #def\ #endif<Tab>\\pind        <Esc>:call C_InsertTemplate("preprocessor.ifndef-def-endif", "v")<CR>' - -	exe "amenu  ".s:Preprocessor.'.#if\ &0\ #endif<Tab>\\pi0                     :call C_PPIf0("a")<CR>2ji' -	exe "imenu  ".s:Preprocessor.'.#if\ &0\ #endif<Tab>\\pi0                <Esc>:call C_PPIf0("a")<CR>2ji' -	exe "vmenu  ".s:Preprocessor.'.#if\ &0\ #endif<Tab>\\pi0                <Esc>:call C_PPIf0("v")<CR>' -	" -	exe "amenu <silent> ".s:Preprocessor.'.&remove\ #if\ 0\ #endif<Tab>\\pr0             :call C_PPIf0Remove()<CR>' -	exe "imenu <silent> ".s:Preprocessor.'.&remove\ #if\ 0\ #endif<Tab>\\pr0        <Esc>:call C_PPIf0Remove()<CR>' -	" -	exe "amenu  ".s:Preprocessor.'.#err&or<Tab>\\pe                             :call C_InsertTemplate("preprocessor.error")<CR>' -	exe "imenu  ".s:Preprocessor.'.#err&or<Tab>\\pe                        <C-C>:call C_InsertTemplate("preprocessor.error")<CR>' -	exe "amenu  ".s:Preprocessor.'.#&line<Tab>\\pl                              :call C_InsertTemplate("preprocessor.line")<CR>' -	exe "imenu  ".s:Preprocessor.'.#&line<Tab>\\pl                         <C-C>:call C_InsertTemplate("preprocessor.line")<CR>' -	exe "amenu  ".s:Preprocessor.'.#&pragma<Tab>\\pp                            :call C_InsertTemplate("preprocessor.pragma")<CR>' -	exe "imenu  ".s:Preprocessor.'.#&pragma<Tab>\\pp                       <C-C>:call C_InsertTemplate("preprocessor.pragma")<CR>' -	" -	"=============================================================================================== -	"----- Menu : Snippets ----------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu           ".s:Snippets.'.S&nippets<Tab>C\/C\+\+       <Nop>' -		exe "amenu           ".s:Snippets.'.-Sep00-                      <Nop>' -	endif -	if s:C_CodeSnippets != "" -		exe "amenu  <silent> ".s:Snippets.'.&read\ code\ snippet<Tab>\\nr       :call C_CodeSnippet("r")<CR>' -		exe "imenu  <silent> ".s:Snippets.'.&read\ code\ snippet<Tab>\\nr  <C-C>:call C_CodeSnippet("r")<CR>' -		exe "amenu  <silent> ".s:Snippets.'.&write\ code\ snippet<Tab>\\nw      :call C_CodeSnippet("w")<CR>' -		exe "imenu  <silent> ".s:Snippets.'.&write\ code\ snippet<Tab>\\nw <C-C>:call C_CodeSnippet("w")<CR>' -		exe "vmenu  <silent> ".s:Snippets.'.&write\ code\ snippet<Tab>\\nw <C-C>:call C_CodeSnippet("wv")<CR>' -		exe "amenu  <silent> ".s:Snippets.'.&edit\ code\ snippet<Tab>\\ne       :call C_CodeSnippet("e")<CR>' -		exe "imenu  <silent> ".s:Snippets.'.&edit\ code\ snippet<Tab>\\ne  <C-C>:call C_CodeSnippet("e")<CR>' -		exe " menu  <silent> ".s:Snippets.'.-SEP1-								:' -	endif -	exe " menu  <silent> ".s:Snippets.'.&pick\ up\ prototype<Tab>\\np         :call C_ProtoPick("n")<CR>' -	exe "imenu  <silent> ".s:Snippets.'.&pick\ up\ prototype<Tab>\\np    <C-C>:call C_ProtoPick("n")<CR>' -	exe "vmenu  <silent> ".s:Snippets.'.&pick\ up\ prototype<Tab>\\np    <C-C>:call C_ProtoPick("v")<CR>' -	exe " menu  <silent> ".s:Snippets.'.&insert\ prototype(s)<Tab>\\ni        :call C_ProtoInsert()<CR>' -	exe "imenu  <silent> ".s:Snippets.'.&insert\ prototype(s)<Tab>\\ni   <C-C>:call C_ProtoInsert()<CR>' -	exe " menu  <silent> ".s:Snippets.'.&clear\ prototype(s)<Tab>\\nc         :call C_ProtoClear()<CR>' -	exe "imenu  <silent> ".s:Snippets.'.&clear\ prototype(s)<Tab>\\nc 	 <C-C>:call C_ProtoClear()<CR>' -	exe " menu  <silent> ".s:Snippets.'.&show\ prototype(s)<Tab>\\ns		      :call C_ProtoShow()<CR>' -	exe "imenu  <silent> ".s:Snippets.'.&show\ prototype(s)<Tab>\\ns		 <C-C>:call C_ProtoShow()<CR>' - -	exe " menu  <silent> ".s:Snippets.'.-SEP2-									     :' -	exe "amenu  <silent>  ".s:Snippets.'.edit\ &local\ templates<Tab>\\ntl        :call C_EditTemplates("local")<CR>' -	exe "imenu  <silent>  ".s:Snippets.'.edit\ &local\ templates<Tab>\\ntl   <C-C>:call C_EditTemplates("local")<CR>' -	exe "amenu  <silent>  ".s:Snippets.'.edit\ &global\ templates<Tab>\\ntg       :call C_EditTemplates("global")<CR>' -	exe "imenu  <silent>  ".s:Snippets.'.edit\ &global\ templates<Tab>\\ntg  <C-C>:call C_EditTemplates("global")<CR>' -	exe "amenu  <silent>  ".s:Snippets.'.reread\ &templates<Tab>\\ntr             :call C_RereadTemplates()<CR>' -	exe "imenu  <silent>  ".s:Snippets.'.reread\ &templates<Tab>\\ntr        <C-C>:call C_RereadTemplates()<CR>' -	exe "amenu            ".s:Snippets.'.switch\ template\ st&yle<Tab>\\nts       :CStyle<Space>' -	exe "imenu            ".s:Snippets.'.switch\ template\ st&yle<Tab>\\nts  <C-C>:CStyle<Space>' -	" -	"=============================================================================================== -	"----- Menu : C++ ---------------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu  ".s:Cpp.'.C&\+\+<Tab>C\/C\+\+         <Nop>' -		exe "amenu  ".s:Cpp.'.-Sep00-                     <Nop>' -	endif -	exe "anoremenu ".s:Cpp.'.c&in                      :call C_InsertTemplate("cpp.cin")<CR>' -	exe "inoremenu ".s:Cpp.'.c&in                 <Esc>:call C_InsertTemplate("cpp.cin")<CR>' -	exe "anoremenu ".s:Cpp.'.c&out<Tab>\\+co           :call C_InsertTemplate("cpp.cout")<CR>' -	exe "inoremenu ".s:Cpp.'.c&out<Tab>\\+co      <Esc>:call C_InsertTemplate("cpp.cout")<CR>' -	exe "anoremenu ".s:Cpp.'.<<\ &\"\"                 :call C_InsertTemplate("cpp.cout-operator")<CR>' -	exe "inoremenu ".s:Cpp.'.<<\ &\"\"            <Esc>:call C_InsertTemplate("cpp.cout-operator")<CR>' -	" -	"----- Submenu : C++ : output manipulators  ------------------------------------------------------- -	" -	exe "amenu ".s:Cpp.'.&output\ manipulators.output\ manip\.<Tab>C\/C\+\+   <Nop>' -	exe "amenu ".s:Cpp.'.&output\ manipulators.-Sep0-                     		<Nop>' -	" -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &boolalpha                :call C_InsertTemplate("cpp.output-manipulator-boolalpha")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &dec                      :call C_InsertTemplate("cpp.output-manipulator-dec")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &endl                     :call C_InsertTemplate("cpp.output-manipulator-endl")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &fixed                    :call C_InsertTemplate("cpp.output-manipulator-fixed")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ fl&ush                    :call C_InsertTemplate("cpp.output-manipulator-flush")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &hex                      :call C_InsertTemplate("cpp.output-manipulator-hex")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &internal                 :call C_InsertTemplate("cpp.output-manipulator-internal")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &left                     :call C_InsertTemplate("cpp.output-manipulator-left")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &oct                      :call C_InsertTemplate("cpp.output-manipulator-oct")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &right                    :call C_InsertTemplate("cpp.output-manipulator-right")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ s&cientific               :call C_InsertTemplate("cpp.output-manipulator-scientific")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &setbase\(\ \)            :call C_InsertTemplate("cpp.output-manipulator-setbase")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ se&tfill\(\ \)            :call C_InsertTemplate("cpp.output-manipulator-setfill")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ setiosfla&g\(\ \)         :call C_InsertTemplate("cpp.output-manipulator-setiosflags")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ set&precision\(\ \)       :call C_InsertTemplate("cpp.output-manipulator-setprecision")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ set&w\(\ \)               :call C_InsertTemplate("cpp.output-manipulator-setw")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ showb&ase                 :call C_InsertTemplate("cpp.output-manipulator-showbase")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ showpoi&nt                :call C_InsertTemplate("cpp.output-manipulator-showpoint")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ showpos\ \(&1\)           :call C_InsertTemplate("cpp.output-manipulator-showpos")<CR>' -	exe "anoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ uppercase\ \(&2\)         :call C_InsertTemplate("cpp.output-manipulator-uppercase")<CR>' -	" -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &boolalpha           <Esc>:call C_InsertTemplate("cpp.output-manipulator-boolalpha")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &dec                 <Esc>:call C_InsertTemplate("cpp.output-manipulator-dec")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &endl                <Esc>:call C_InsertTemplate("cpp.output-manipulator-endl")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &fixed               <Esc>:call C_InsertTemplate("cpp.output-manipulator-fixed")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ fl&ush               <Esc>:call C_InsertTemplate("cpp.output-manipulator-flush")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &hex                 <Esc>:call C_InsertTemplate("cpp.output-manipulator-hex")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &internal            <Esc>:call C_InsertTemplate("cpp.output-manipulator-internal")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &left                <Esc>:call C_InsertTemplate("cpp.output-manipulator-left")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &oct                 <Esc>:call C_InsertTemplate("cpp.output-manipulator-oct")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &right               <Esc>:call C_InsertTemplate("cpp.output-manipulator-right")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ s&cientific          <Esc>:call C_InsertTemplate("cpp.output-manipulator-scientific")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ &setbase\(\ \)       <Esc>:call C_InsertTemplate("cpp.output-manipulator-setbase")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ se&tfill\(\ \)       <Esc>:call C_InsertTemplate("cpp.output-manipulator-setfill")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ setiosfla&g\(\ \)    <Esc>:call C_InsertTemplate("cpp.output-manipulator-setiosflags")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ set&precision\(\ \)  <Esc>:call C_InsertTemplate("cpp.output-manipulator-setprecision")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ set&w\(\ \)          <Esc>:call C_InsertTemplate("cpp.output-manipulator-setw")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ showb&ase            <Esc>:call C_InsertTemplate("cpp.output-manipulator-showbase")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ showpoi&nt           <Esc>:call C_InsertTemplate("cpp.output-manipulator-showpoint")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ showpos\ \(&1\)      <Esc>:call C_InsertTemplate("cpp.output-manipulator-showpos")<CR>' -	exe "inoremenu ".s:Cpp.'.&output\ manipulators.\<\<\ uppercase\ \(&2\)    <Esc>:call C_InsertTemplate("cpp.output-manipulator-uppercase")<CR>' -	" -	"----- Submenu : C++ : ios flag bits  ------------------------------------------------------------- -	" -	exe "amenu ".s:Cpp.'.ios\ flag&bits.ios\ flags<Tab>C\/C\+\+       <Nop>' -	exe "amenu ".s:Cpp.'.ios\ flag&bits.-Sep0-               					<Nop>' -	" -	call C_CIosFlagMenus ( s:Cpp.'.ios\ flag&bits', s:Cpp_IosFlagBits ) -	" -	"----- Submenu : C++   library  (algorithm - locale) ---------------------------------------------- -	" -	exe "amenu ".s:Cpp.'.&#include\ <alg\.\.vec><Tab>\\+ps.alg\.\.vec<Tab>C\/C\+\+   <Nop>' -	exe "amenu ".s:Cpp.'.&#include\ <alg\.\.vec><Tab>\\+ps.-Sep0-          					<Nop>' -	call C_CIncludeMenus ( s:Cpp.'.&#include\ <alg\.\.vec><Tab>\\+ps', s:Cpp_StandardLibs ) -	" -	"----- Submenu : C     library  (cassert - ctime) ------------------------------------------------- -	" -	exe "amenu ".s:Cpp.'.&#include\ <cX><Tab>\\+pc.cX<Tab>C\/C\+\+ 	<Nop>' -	exe "amenu ".s:Cpp.'.&#include\ <cX><Tab>\\+pc.-Sep0-        		<Nop>' -	call C_CIncludeMenus ( s:Cpp.'.&#include\ <cX><Tab>\\+pc', s:Cpp_CStandardLibs ) -	" -	"----- End Submenu : C     library  (cassert - ctime) --------------------------------------------- -	" -	exe "amenu <silent> ".s:Cpp.'.-SEP2-                        :' - -	exe "amenu <silent> ".s:Cpp.'.&class<Tab>\\+c                              :call C_InsertTemplate("cpp.class-definition")<CR>' -	exe "imenu <silent> ".s:Cpp.'.&class<Tab>\\+c                         <Esc>:call C_InsertTemplate("cpp.class-definition")<CR>' -	exe "amenu <silent> ".s:Cpp.'.class\ (w\.\ &new)<Tab>\\+cn                 :call C_InsertTemplate("cpp.class-using-new-definition")<CR>' -	exe "imenu <silent> ".s:Cpp.'.class\ (w\.\ &new)<Tab>\\+cn            <Esc>:call C_InsertTemplate("cpp.class-using-new-definition")<CR>' -	exe "amenu <silent> ".s:Cpp.'.&templ\.\ class<Tab>\\+tc                    :call C_InsertTemplate("cpp.template-class-definition")<CR>' -	exe "imenu <silent> ".s:Cpp.'.&templ\.\ class<Tab>\\+tc               <Esc>:call C_InsertTemplate("cpp.template-class-definition")<CR>' -	exe "amenu <silent> ".s:Cpp.'.templ\.\ class\ (w\.\ ne&w)<Tab>\\+tcn       :call C_InsertTemplate("cpp.template-class-using-new-definition")<CR>' -	exe "imenu <silent> ".s:Cpp.'.templ\.\ class\ (w\.\ ne&w)<Tab>\\+tcn  <Esc>:call C_InsertTemplate("cpp.template-class-using-new-definition")<CR>' - -	" -	"----- Submenu : C++ : IMPLEMENTATION  ------------------------------------------------------- -	" -	exe "amenu ".s:Cpp.'.IM&PLEMENTATION.IMPLEMENT\.<Tab>C\/C\+\+   <Nop>' -	exe "amenu ".s:Cpp.'.IM&PLEMENTATION.-Sep0-                     <Nop>' -	" -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&class<Tab>\\+ci             					     :call C_InsertTemplate("cpp.class-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&class<Tab>\\+ci             					<Esc>:call C_InsertTemplate("cpp.class-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.class\ (w\.\ &new)<Tab>\\+cni    			     :call C_InsertTemplate("cpp.class-using-new-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.class\ (w\.\ &new)<Tab>\\+cni    			<Esc>:call C_InsertTemplate("cpp.class-using-new-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&method<Tab>\\+mi                   	     :call C_InsertTemplate("cpp.method-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&method<Tab>\\+mi                   	<Esc>:call C_InsertTemplate("cpp.method-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&accessor<Tab>\\+ai                		     :call C_InsertTemplate("cpp.accessor-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&accessor<Tab>\\+ai                		<Esc>:call C_InsertTemplate("cpp.accessor-implementation")<CR>' -	" -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.-SEP21-                   	:' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&templ\.\ class<Tab>\\+tci            	<Esc>:call C_InsertTemplate("cpp.template-class-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.&templ\.\ class<Tab>\\+tci            	     :call C_InsertTemplate("cpp.template-class-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.templ\.\ class\ (w\.\ ne&w)<Tab>\\+tcni <Esc>:call C_InsertTemplate("cpp.template-class-using-new-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.templ\.\ class\ (w\.\ ne&w)<Tab>\\+tcni      :call C_InsertTemplate("cpp.template-class-using-new-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.templ\.\ mðod<Tab>\\+tmi           	     :call C_InsertTemplate("cpp.template-method-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.templ\.\ mðod<Tab>\\+tmi           	<Esc>:call C_InsertTemplate("cpp.template-method-implementation")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.templ\.\ a&ccessor<Tab>\\+tai         	     :call C_InsertTemplate("cpp.template-accessor-implementation")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.templ\.\ a&ccessor<Tab>\\+tai         	<Esc>:call C_InsertTemplate("cpp.template-accessor-implementation")<CR>' -	" -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.-SEP22-                     :' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.operator\ &<<                    :call C_InsertTemplate("cpp.operator-in")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.operator\ &<<               <Esc>:call C_InsertTemplate("cpp.operator-in")<CR>' -	exe "amenu <silent> ".s:Cpp.'.IM&PLEMENTATION.operator\ &>>                    :call C_InsertTemplate("cpp.operator-out")<CR>' -	exe "imenu <silent> ".s:Cpp.'.IM&PLEMENTATION.operator\ &>>               <Esc>:call C_InsertTemplate("cpp.operator-out")<CR>' -	" -	"----- End Submenu : C++ : IMPLEMENTATION  ------------------------------------------------------- -	" -	exe "amenu <silent> ".s:Cpp.'.-SEP31-                       :' -	exe "amenu <silent> ".s:Cpp.'.templ\.\ &function<Tab>\\+tf                 :call C_InsertTemplate("cpp.template-function")<CR>' -	exe "imenu <silent> ".s:Cpp.'.templ\.\ &function<Tab>\\+tf            <Esc>:call C_InsertTemplate("cpp.template-function")<CR>' -	exe "amenu <silent> ".s:Cpp.'.&error\ class<Tab>\\+ec                      :call C_InsertTemplate("cpp.error-class")<CR>' -	exe "imenu <silent> ".s:Cpp.'.&error\ class<Tab>\\+ec                 <Esc>:call C_InsertTemplate("cpp.error-class")<CR>' - -	exe "amenu <silent> ".s:Cpp.'.-SEP5-                        :' -	exe "amenu <silent> ".s:Cpp.'.tr&y\ \.\.\ catch<Tab>\\+tr                  :call C_InsertTemplate("cpp.try-catch")<CR>' -	exe "imenu <silent> ".s:Cpp.'.tr&y\ \.\.\ catch<Tab>\\+tr             <Esc>:call C_InsertTemplate("cpp.try-catch")<CR>' -	exe "vmenu <silent> ".s:Cpp.'.tr&y\ \.\.\ catch<Tab>\\+tr             <Esc>:call C_InsertTemplate("cpp.try-catch", "v")<CR>' -	exe "amenu <silent> ".s:Cpp.'.catc&h<Tab>\\+ca                             :call C_InsertTemplate("cpp.catch")<CR>' -	exe "imenu <silent> ".s:Cpp.'.catc&h<Tab>\\+ca                        <Esc>:call C_InsertTemplate("cpp.catch")<CR>' -	exe "vmenu <silent> ".s:Cpp.'.catc&h<Tab>\\+ca                        <Esc>:call C_InsertTemplate("cpp.catch", "v")<CR>' - -	exe "amenu <silent> ".s:Cpp.'.catch\(&\.\.\.\)<Tab>\\+c\.                   :call C_InsertTemplate("cpp.catch-points")<CR>' -	exe "imenu <silent> ".s:Cpp.'.catch\(&\.\.\.\)<Tab>\\+c\.              <Esc>:call C_InsertTemplate("cpp.catch-points")<CR>' -	exe "vmenu <silent> ".s:Cpp.'.catch\(&\.\.\.\)<Tab>\\+c\.              <Esc>:call C_InsertTemplate("cpp.catch-points", "v")<CR>' - -	exe "amenu <silent> ".s:Cpp.'.-SEP6-                        :' -	exe "amenu <silent> ".s:Cpp.'.open\ input\ file\ \ \(&4\)        :call C_InsertTemplate("cpp.open-input-file")<CR>' -	exe "imenu <silent> ".s:Cpp.'.open\ input\ file\ \ \(&4\)   <Esc>:call C_InsertTemplate("cpp.open-input-file")<CR>' -	exe "vmenu <silent> ".s:Cpp.'.open\ input\ file\ \ \(&4\)   <Esc>:call C_InsertTemplate("cpp.open-input-file", "v")<CR>' -	exe "amenu <silent> ".s:Cpp.'.open\ output\ file\ \(&5\)         :call C_InsertTemplate("cpp.open-output-file")<CR>' -	exe "imenu <silent> ".s:Cpp.'.open\ output\ file\ \(&5\)    <Esc>:call C_InsertTemplate("cpp.open-output-file")<CR>' -	exe "vmenu <silent> ".s:Cpp.'.open\ output\ file\ \(&5\)    <Esc>:call C_InsertTemplate("cpp.open-output-file", "v")<CR>' -	exe "amenu <silent> ".s:Cpp.'.-SEP7-                        :' - -	exe "amenu <silent> ".s:Cpp.'.&using\ namespace\ std;            :call C_InsertTemplate("cpp.namespace-std")<CR>' -	exe "imenu <silent> ".s:Cpp.'.&using\ namespace\ std;       <Esc>:call C_InsertTemplate("cpp.namespace-std")<CR>' -	exe "amenu <silent> ".s:Cpp.'.u&sing\ namespace\ ???;            :call C_InsertTemplate("cpp.namespace")<CR>' -	exe "imenu <silent> ".s:Cpp.'.u&sing\ namespace\ ???;       <Esc>:call C_InsertTemplate("cpp.namespace")<CR>' - -	exe "amenu <silent> ".s:Cpp.'.names&pace\ ???\ \{\ \}            :call C_InsertTemplate("cpp.namespace-block")<CR>' -	exe "imenu <silent> ".s:Cpp.'.names&pace\ ???\ \{\ \}       <Esc>:call C_InsertTemplate("cpp.namespace-block")<CR>' -	exe "vmenu <silent> ".s:Cpp.'.names&pace\ ???\ \{\ \}       <Esc>:call C_InsertTemplate("cpp.namespace-block", "v")<CR>' -	exe "amenu <silent> ".s:Cpp.'.namespace\ &alias\ =\ ???          :call C_InsertTemplate("cpp.namespace-alias")<CR>' -	exe "imenu <silent> ".s:Cpp.'.namespace\ &alias\ =\ ???     <Esc>:call C_InsertTemplate("cpp.namespace-alias")<CR>' - -	exe "amenu <silent> ".s:Cpp.'.-SEP8-              :' -	" -	"----- Submenu : RTTI  ---------------------------------------------------------------------------- -	" -	exe "amenu ".s:Cpp.'.&RTTI.RTTI<Tab>C\/C\+\+      <Nop>' -	exe "amenu ".s:Cpp.'.&RTTI.-Sep0-                 <Nop>' -	" -	exe "anoremenu ".s:Cpp.'.&RTTI.&typeid                     :call C_InsertTemplate("cpp.rtti-typeid")<CR>' -	exe "anoremenu ".s:Cpp.'.&RTTI.&static_cast                :call C_InsertTemplate("cpp.rtti-static-cast")<CR>' -	exe "anoremenu ".s:Cpp.'.&RTTI.&const_cast                 :call C_InsertTemplate("cpp.rtti-const-cast")<CR>' -	exe "anoremenu ".s:Cpp.'.&RTTI.&reinterpret_cast           :call C_InsertTemplate("cpp.rtti-reinterpret-cast")<CR>' -	exe "anoremenu ".s:Cpp.'.&RTTI.&dynamic_cast               :call C_InsertTemplate("cpp.rtti-dynamic-cast")<CR>' -	" -	exe "inoremenu ".s:Cpp.'.&RTTI.&typeid                <Esc>:call C_InsertTemplate("cpp.rtti-typeid")<CR>' -	exe "inoremenu ".s:Cpp.'.&RTTI.&static_cast           <Esc>:call C_InsertTemplate("cpp.rtti-static-cast")<CR>' -	exe "inoremenu ".s:Cpp.'.&RTTI.&const_cast            <Esc>:call C_InsertTemplate("cpp.rtti-const-cast")<CR>' -	exe "inoremenu ".s:Cpp.'.&RTTI.&reinterpret_cast      <Esc>:call C_InsertTemplate("cpp.rtti-reinterpret-cast")<CR>' -	exe "inoremenu ".s:Cpp.'.&RTTI.&dynamic_cast          <Esc>:call C_InsertTemplate("cpp.rtti-dynamic-cast")<CR>' -	" -	exe "vnoremenu ".s:Cpp.'.&RTTI.&typeid                <Esc>:call C_InsertTemplate("cpp.rtti-typeid", "v")<CR>' -	exe "vnoremenu ".s:Cpp.'.&RTTI.&static_cast           <Esc>:call C_InsertTemplate("cpp.rtti-static-cast", "v")<CR>' -	exe "vnoremenu ".s:Cpp.'.&RTTI.&const_cast            <Esc>:call C_InsertTemplate("cpp.rtti-const-cast", "v")<CR>' -	exe "vnoremenu ".s:Cpp.'.&RTTI.&reinterpret_cast      <Esc>:call C_InsertTemplate("cpp.rtti-reinterpret-cast", "v")<CR>' -	exe "vnoremenu ".s:Cpp.'.&RTTI.&dynamic_cast          <Esc>:call C_InsertTemplate("cpp.rtti-dynamic-cast", "v")<CR>' -	" -	"----- End Submenu : RTTI  ------------------------------------------------------------------------ -	" -	exe "amenu  <silent>".s:Cpp.'.e&xtern\ \"C\"\ \{\ \}       :call C_InsertTemplate("cpp.extern")<CR>' -	exe "imenu  <silent>".s:Cpp.'.e&xtern\ \"C\"\ \{\ \}  <Esc>:call C_InsertTemplate("cpp.extern")<CR>' -	exe "vmenu  <silent>".s:Cpp.'.e&xtern\ \"C\"\ \{\ \}  <Esc>:call C_InsertTemplate("cpp.extern", "v")<CR>' -	" -	"=============================================================================================== -	"----- Menu : run  ----- --------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_MenuHeader == 'yes' -		exe "amenu  ".s:Run.'.&Run<Tab>C\/C\+\+       <Nop>' -		exe "amenu  ".s:Run.'.-Sep00-                 <Nop>' -	endif -	" -	exe "amenu  <silent>  ".s:Run.'.save\ and\ &compile<Tab>\\rc\ \ \<A-F9\>         :call C_Compile()<CR>:call C_HlMessage()<CR>' -	exe "imenu  <silent>  ".s:Run.'.save\ and\ &compile<Tab>\\rc\ \ \<A-F9\>    <C-C>:call C_Compile()<CR>:call C_HlMessage()<CR>' -	exe "amenu  <silent>  ".s:Run.'.&link<Tab>\\rl\ \ \ \ \<F9\>                     :call C_Link()<CR>:call C_HlMessage()<CR>' -	exe "imenu  <silent>  ".s:Run.'.&link<Tab>\\rl\ \ \ \ \<F9\>                <C-C>:call C_Link()<CR>:call C_HlMessage()<CR>' -	exe "amenu  <silent>  ".s:Run.'.&run<Tab>\\rr\ \ \<C-F9\>                        :call C_Run()<CR>' -	exe "imenu  <silent>  ".s:Run.'.&run<Tab>\\rr\ \ \<C-F9\>                   <C-C>:call C_Run()<CR>' -	exe "amenu  <silent>  ".s:Run.'.cmd\.\ line\ &arg\.<Tab>\\ra\ \ \<S-F9\>         :call C_Arguments()<CR>' -	exe "imenu  <silent>  ".s:Run.'.cmd\.\ line\ &arg\.<Tab>\\ra\ \ \<S-F9\>    <C-C>:call C_Arguments()<CR>' -	" -	exe "amenu  <silent>  ".s:Run.'.-SEP0-                            :' -	exe "amenu  <silent>  ".s:Run.'.&make<Tab>\\rm                                    :call C_Make()<CR>' -	exe "imenu  <silent>  ".s:Run.'.&make<Tab>\\rm                               <C-C>:call C_Make()<CR>' -	exe "amenu  <silent>  ".s:Run.'.cmd\.\ line\ ar&g\.\ for\ make<Tab>\\rg           :call C_MakeArguments()<CR>' -	exe "imenu  <silent>  ".s:Run.'.cmd\.\ line\ ar&g\.\ for\ make<Tab>\\rg      <C-C>:call C_MakeArguments()<CR>' -	" -	exe "amenu  <silent>  ".s:Run.'.-SEP1-                            :' -	" -	if s:C_SplintIsExecutable==1 -		exe "amenu  <silent>  ".s:Run.'.s&plint<Tab>\\rp                                :call C_SplintCheck()<CR>:call C_HlMessage()<CR>' -		exe "imenu  <silent>  ".s:Run.'.s&plint<Tab>\\rp                           <C-C>:call C_SplintCheck()<CR>:call C_HlMessage()<CR>' -		exe "amenu  <silent>  ".s:Run.'.cmd\.\ line\ arg\.\ for\ spl&int<Tab>\\ri       :call C_SplintArguments()<CR>' -		exe "imenu  <silent>  ".s:Run.'.cmd\.\ line\ arg\.\ for\ spl&int<Tab>\\ri  <C-C>:call C_SplintArguments()<CR>' -		exe "amenu  <silent>  ".s:Run.'.-SEP2-                          :' -	endif -	" -	if s:C_CodeCheckIsExecutable==1 -		exe "amenu  <silent>  ".s:Run.'.CodeChec&k<Tab>\\rk                               :call C_CodeCheck()<CR>:call C_HlMessage()<CR>' -		exe "imenu  <silent>  ".s:Run.'.CodeChec&k<Tab>\\rk                          <C-C>:call C_CodeCheck()<CR>:call C_HlMessage()<CR>' -		exe "amenu  <silent>  ".s:Run.'.cmd\.\ line\ arg\.\ for\ Cod&eCheck<Tab>\\re      :call C_CodeCheckArguments()<CR>' -		exe "imenu  <silent>  ".s:Run.'.cmd\.\ line\ arg\.\ for\ Cod&eCheck<Tab>\\re <C-C>:call C_CodeCheckArguments()<CR>' -		exe "amenu  <silent>  ".s:Run.'.-SEP3-                          :' -	endif -	" -	exe "amenu    <silent>  ".s:Run.'.in&dent<Tab>\\rd                                  :call C_Indent()<CR>' -	exe "imenu    <silent>  ".s:Run.'.in&dent<Tab>\\rd                             <C-C>:call C_Indent()<CR>' -	if	s:MSWIN -		exe "amenu  <silent>  ".s:Run.'.&hardcopy\ to\ printer<Tab>\\rh                 :call C_Hardcopy("n")<CR>' -		exe "imenu  <silent>  ".s:Run.'.&hardcopy\ to\ printer<Tab>\\rh            <C-C>:call C_Hardcopy("n")<CR>' -		exe "vmenu  <silent>  ".s:Run.'.&hardcopy\ to\ printer<Tab>\\rh            <C-C>:call C_Hardcopy("v")<CR>' -	else -		exe "amenu  <silent>  ".s:Run.'.&hardcopy\ to\ FILENAME\.ps<Tab>\\rh            :call C_Hardcopy("n")<CR>' -		exe "imenu  <silent>  ".s:Run.'.&hardcopy\ to\ FILENAME\.ps<Tab>\\rh       <C-C>:call C_Hardcopy("n")<CR>' -		exe "vmenu  <silent>  ".s:Run.'.&hardcopy\ to\ FILENAME\.ps<Tab>\\rh       <C-C>:call C_Hardcopy("v")<CR>' -	endif -	exe "imenu  <silent>  ".s:Run.'.-SEP4-                           :' - -	exe "amenu  <silent>  ".s:Run.'.&settings<Tab>\\rs                                :call C_Settings()<CR>' -	exe "imenu  <silent>  ".s:Run.'.&settings<Tab>\\rs                           <C-C>:call C_Settings()<CR>' -	exe "imenu  <silent>  ".s:Run.'.-SEP5-                           :' - -	if	!s:MSWIN -		exe "amenu  <silent>  ".s:Run.'.&xterm\ size<Tab>\\rx                           :call C_XtermSize()<CR>' -		exe "imenu  <silent>  ".s:Run.'.&xterm\ size<Tab>\\rx                      <C-C>:call C_XtermSize()<CR>' -	endif -	if s:C_OutputGvim == "vim" -		exe "amenu  <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm<Tab>\\ro           :call C_Toggle_Gvim_Xterm()<CR><CR>' -		exe "imenu  <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm<Tab>\\ro      <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -	else -		if s:C_OutputGvim == "buffer" -			exe "amenu  <silent>  ".s:Run.'.&output:\ BUFFER->xterm->vim<Tab>\\ro         :call C_Toggle_Gvim_Xterm()<CR><CR>' -			exe "imenu  <silent>  ".s:Run.'.&output:\ BUFFER->xterm->vim<Tab>\\ro    <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -		else -			exe "amenu  <silent>  ".s:Run.'.&output:\ XTERM->vim->buffer<Tab>\\ro         :call C_Toggle_Gvim_Xterm()<CR><CR>' -			exe "imenu  <silent>  ".s:Run.'.&output:\ XTERM->vim->buffer<Tab>\\ro    <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -		endif -	endif -	" -	"=============================================================================================== -	"----- Menu : help  -------------------------------------------------------   {{{2 -	"=============================================================================================== -	" -	if s:C_Root != "" -		exe " menu  <silent>  ".s:C_Root.'&help\ (C-Support)<Tab>\\hp        :call C_HelpCsupport()<CR>' -		exe "imenu  <silent>  ".s:C_Root.'&help\ (C-Support)<Tab>\\hp   <C-C>:call C_HelpCsupport()<CR>' -		exe " menu  <silent>  ".s:C_Root.'show\ &manual<Tab>\\hm   		       :call C_Help("m")<CR>' -		exe "imenu  <silent>  ".s:C_Root.'show\ &manual<Tab>\\hm 		    <C-C>:call C_Help("m")<CR>' -	endif - -endfunction    " ----------  end of function  C_InitMenus  ---------- -" -"=============================================================================================== -"----- Menu Functions -------------------------------------------------------------------------- -"=============================================================================================== -" -let s:C_StandardLibs       = [ -  \ '&assert\.h' , '&ctype\.h' ,   '&errno\.h' , -  \ '&float\.h' ,  '&limits\.h' ,  'l&ocale\.h' , -  \ '&math\.h' ,   'set&jmp\.h' ,  's&ignal\.h' , -  \ 'stdar&g\.h' , 'st&ddef\.h' ,  '&stdio\.h' , -  \ 'stdli&b\.h' , 'st&ring\.h' ,  '&time\.h' , -  \ ] -" -let s:C_C99Libs       = [ -  \ '&complex\.h', '&fenv\.h',    '&inttypes\.h', -  \ 'is&o646\.h',  '&stdbool\.h', 's&tdint\.h', -  \ 'tg&math\.h',  '&wchar\.h',   'wct&ype\.h', -  \ ] -" -let s:Cpp_StandardLibs       = [ -  \ '&algorithm', '&bitset',    '&complex',    '&deque', -  \ '&exception', '&fstream',   'f&unctional', 'iomani&p', -  \ '&ios',       'iosf&wd',    'io&stream',   'istrea&m', -  \ 'iterato&r',  '&limits',    'lis&t',       'l&ocale', -  \ '&map',       'memor&y',    '&new',        'numeri&c', -  \ '&ostream',   '&queue',     '&set',        'sst&ream', -  \ 'st&ack',     'stde&xcept', 'stream&buf',  'str&ing', -  \ '&typeinfo',  '&utility',   '&valarray',   'v&ector', -  \ ] -" -let s:Cpp_CStandardLibs       = [ -  \ 'c&assert', 'c&ctype',  'c&errno',  'c&float', -  \ 'c&limits', 'cl&ocale', 'c&math',   'cset&jmp', -  \ 'cs&ignal', 'cstdar&g', 'cst&ddef', 'c&stdio', -  \ 'cstdli&b', 'cst&ring', 'c&time', -  \ ] - -let s:Cpp_IosFlagBits       = [ -	\	'ios::&adjustfield', 'ios::bas&efield',           'ios::&boolalpha', -	\	'ios::&dec',         'ios::&fixed',               'ios::floa&tfield', -	\	'ios::&hex',         'ios::&internal',            'ios::&left', -	\	'ios::&oct',         'ios::&right',               'ios::s&cientific', -	\	'ios::sho&wbase',    'ios::showpoint\ \(&1\)',    'ios::show&pos', -	\	'ios::&skipws',      'ios::u&nitbuf',             'ios::&uppercase', -  \ ] - -"------------------------------------------------------------------------------ -"  C_CIncludeMenus: generate the C/C++-standard library menu entries   {{{1 -"------------------------------------------------------------------------------ -function! C_CIncludeMenus ( menupath, liblist ) -	for item in a:liblist -		let replacement	= substitute( item, '[&\\]*', '','g' ) -		exe "anoremenu  ".a:menupath.'.'.item.'          o#include<Tab><'.replacement.'>' -		exe "inoremenu  ".a:menupath.'.'.item.'     <Esc>o#include<Tab><'.replacement.'>' -	endfor -	return -endfunction    " ----------  end of function C_CIncludeMenus  ---------- - -"------------------------------------------------------------------------------ -"  C_CIosFlagMenus: generate the C++ ios flags menu entries   {{{1 -"------------------------------------------------------------------------------ -function! C_CIosFlagMenus ( menupath, flaglist ) -	for item in a:flaglist -		let replacement	= substitute( item, '[^[:alpha:]:]', '','g' ) -		exe " noremenu ".a:menupath.'.'.item.'     i'.replacement -		exe "inoremenu ".a:menupath.'.'.item.'      '.replacement -	endfor -	return -endfunction    " ----------  end of function C_CIosFlagMenus  ---------- -" -"------------------------------------------------------------------------------ -"  C_Input: Input after a highlighted prompt     {{{1 -"------------------------------------------------------------------------------ -function! C_Input ( promp, text, ... ) -	echohl Search																					" highlight prompt -	call inputsave()																			" preserve typeahead -	if a:0 == 0 || a:1 == '' -		let retval	=input( a:promp, a:text ) -	else -		let retval	=input( a:promp, a:text, a:1 ) -	endif -	call inputrestore()																		" restore typeahead -	echohl None																						" reset highlighting -	let retval  = substitute( retval, '^\s\+', "", "" )		" remove leading whitespaces -	let retval  = substitute( retval, '\s\+$', "", "" )		" remove trailing whitespaces -	return retval -endfunction    " ----------  end of function C_Input ---------- -" -"------------------------------------------------------------------------------ -"  C_AdjustLineEndComm: adjust line-end comments     {{{1 -"------------------------------------------------------------------------------ -" -" C comment or C++ comment: -let	s:c_cppcomment= '\(\/\*.\{-}\*\/\|\/\/.*$\)' - -function! C_AdjustLineEndComm ( mode ) range -	" -	if !exists("b:C_LineEndCommentColumn") -		let	b:C_LineEndCommentColumn	= s:C_LineEndCommColDefault -	endif - -	let save_cursor = getpos(".") - -	let	save_expandtab	= &expandtab -	exe	":set expandtab" - -	if a:mode == 'v' -		let pos0	= line("'<") -		let pos1	= line("'>") -	else -		let pos0	= line(".") -		let pos1	= pos0 -	endif - -	let	linenumber	= pos0 -	exe ":".pos0 - -	while linenumber <= pos1 -		let	line= getline(".") - -		" line is not a pure comment but contains one -		" -		if  match( line, '^\s*'.s:c_cppcomment ) < 0 &&  match( line, s:c_cppcomment ) > 0 -      " -      " disregard comments starting in a string -      " -			let	idx1	      = -1 -			let	idx2	      = -1 -			let	commentstart= -2 -			let	commentend	= 0 -			while commentstart < idx2 && idx2 < commentend -				let start	      = commentend -				let idx2	      = match( line, s:c_cppcomment, start ) -				let commentstart= match   ( line, '"[^"]\+"', start ) -				let commentend	= matchend( line, '"[^"]\+"', start ) -			endwhile -      " -      " try to adjust the comment -      " -			let idx1	= 1 + match( line, '\s*'.s:c_cppcomment, start ) -			let idx2	= 1 + idx2 -			call setpos(".", [ 0, linenumber, idx1, 0 ] ) -			let vpos1	= virtcol(".") -			call setpos(".", [ 0, linenumber, idx2, 0 ] ) -			let vpos2	= virtcol(".") - -			if   ! (   vpos2 == b:C_LineEndCommentColumn -						\	|| vpos1 > b:C_LineEndCommentColumn -						\	|| idx2  == 0 ) - -				exe ":.,.retab" -				" insert some spaces -				if vpos2 < b:C_LineEndCommentColumn -					let	diff	= b:C_LineEndCommentColumn-vpos2 -					call setpos(".", [ 0, linenumber, vpos2, 0 ] ) -					let	@"	= ' ' -					exe "normal	".diff."P" -				endif - -				" remove some spaces -				if vpos1 < b:C_LineEndCommentColumn && vpos2 > b:C_LineEndCommentColumn -					let	diff	= vpos2 - b:C_LineEndCommentColumn -					call setpos(".", [ 0, linenumber, b:C_LineEndCommentColumn, 0 ] ) -					exe "normal	".diff."x" -				endif - -			endif -		endif -		let linenumber=linenumber+1 -		normal j -	endwhile -	" -	" restore tab expansion settings and cursor position -	let &expandtab	= save_expandtab -	call setpos('.', save_cursor) - -endfunction		" ---------- end of function  C_AdjustLineEndComm  ---------- -" -"------------------------------------------------------------------------------ -"  C_GetLineEndCommCol: get line-end comment position    {{{1 -"------------------------------------------------------------------------------ -function! C_GetLineEndCommCol () -	let actcol	= virtcol(".") -	if actcol+1 == virtcol("$") -		let	b:C_LineEndCommentColumn	= '' -		while match( b:C_LineEndCommentColumn, '^\s*\d\+\s*$' ) < 0 -			let b:C_LineEndCommentColumn = C_Input( 'start line-end comment at virtual column : ', actcol, '' ) -		endwhile -	else -		let	b:C_LineEndCommentColumn	= virtcol(".") -	endif -  echomsg "line end comments will start at column  ".b:C_LineEndCommentColumn -endfunction		" ---------- end of function  C_GetLineEndCommCol  ---------- -" -"------------------------------------------------------------------------------ -"  C_LineEndComment: single line-end comment    {{{1 -"------------------------------------------------------------------------------ -function! C_LineEndComment ( ) -	if !exists("b:C_LineEndCommentColumn") -		let	b:C_LineEndCommentColumn	= s:C_LineEndCommColDefault -	endif -	" ----- trim whitespaces ----- -	exe 's/\s*$//' -	let linelength= virtcol("$") - 1 -	if linelength < b:C_LineEndCommentColumn -		let diff	= b:C_LineEndCommentColumn -1 -linelength -		exe "normal	".diff."A " -	endif -	" append at least one blank -	if linelength >= b:C_LineEndCommentColumn -		exe "normal A " -	endif -	call C_InsertTemplate('comment.end-of-line-comment') -endfunction		" ---------- end of function  C_LineEndComment  ---------- -" -"------------------------------------------------------------------------------ -"  C_MultiLineEndComments: multi line-end comments    {{{1 -"------------------------------------------------------------------------------ -function! C_MultiLineEndComments ( ) -	" -  if !exists("b:C_LineEndCommentColumn") -		let	b:C_LineEndCommentColumn	= s:C_LineEndCommColDefault -  endif -	" -	let pos0	= line("'<") -	let pos1	= line("'>") -	" -	" ----- trim whitespaces ----- -  exe pos0.','.pos1.'s/\s*$//' -	" -	" ----- find the longest line ----- -	let	maxlength		= 0 -	normal '< -	for linenumber in range( pos0, pos1 ) -		if  getline(linenumber) !~ '^\s*$'  && maxlength<virtcol("$") -			let maxlength= virtcol("$") -		endif -	endfor -	" -	if maxlength < b:C_LineEndCommentColumn -	  let maxlength = b:C_LineEndCommentColumn -	else -	  let maxlength = maxlength+1		" at least 1 blank -	endif -	" -	" ----- fill lines with blanks ----- -	for linenumber in range( pos0, pos1 ) -		exe ":".linenumber -		if getline(linenumber) !~ '^\s*$' -			let diff	= maxlength - virtcol("$") -			exe "normal	".diff."A " -			call C_InsertTemplate('comment.end-of-line-comment') -		endif -	endfor -	" -	" ----- back to the begin of the marked block ----- -	stopinsert -	normal '<$ -	if match( getline("."), '\/\/\s*$' ) < 0 -		if search( '\/\*', 'bcW', line(".") ) > 1 -			normal l -		endif -		let save_cursor = getpos(".") -		if getline(".")[save_cursor[2]+1] == ' ' -			normal l -		endif -	else -		normal $ -	endif -endfunction		" ---------- end of function  C_MultiLineEndComments  ---------- -" -"------------------------------------------------------------------------------ -"  C_Comment_C_SectionAll: Section Comments    {{{1 -"------------------------------------------------------------------------------ -" -function! C_Comment_C_SectionAll ( type ) - -	call C_InsertTemplate("comment.file-section-cpp-header-includes") -	call C_InsertTemplate("comment.file-section-cpp-macros") -	call C_InsertTemplate("comment.file-section-cpp-typedefs") -	call C_InsertTemplate("comment.file-section-cpp-data-types") -	if a:type=="cpp" -		call C_InsertTemplate("comment.file-section-cpp-class-defs") -	endif -	call C_InsertTemplate("comment.file-section-cpp-local-variables") -	call C_InsertTemplate("comment.file-section-cpp-prototypes") -	call C_InsertTemplate("comment.file-section-cpp-function-defs-exported") -	call C_InsertTemplate("comment.file-section-cpp-function-defs-local") -	if a:type=="cpp" -		call C_InsertTemplate("comment.file-section-cpp-class-implementations-exported") -		call C_InsertTemplate("comment.file-section-cpp-class-implementations-local") -	endif - -endfunction    " ----------  end of function C_Comment_C_SectionAll ---------- -" -function! C_Comment_H_SectionAll ( type ) - -	call C_InsertTemplate("comment.file-section-hpp-header-includes") -	call C_InsertTemplate("comment.file-section-hpp-macros") -	call C_InsertTemplate("comment.file-section-hpp-exported-typedefs") -	call C_InsertTemplate("comment.file-section-hpp-exported-data-types") -	if a:type=="cpp" -		call C_InsertTemplate("comment.file-section-hpp-exported-class-defs") -	endif -	call C_InsertTemplate("comment.file-section-hpp-exported-variables") -	call C_InsertTemplate("comment.file-section-hpp-exported-function-declarations") - -endfunction    " ----------  end of function C_Comment_H_SectionAll ---------- -" -"---------------------------------------------------------------------- -"  C_CodeComment : Code -> Comment   {{{1 -"---------------------------------------------------------------------- -function! C_CodeComment( mode, style ) - -	if a:mode=="a" -		if a:style == 'yes' -			silent exe ":s#^#/\* #" -			silent put = ' */' -		else -			silent exe ":s#^#//#" -		endif -	endif - -	if a:mode=="v" -		if a:style == 'yes' -			silent exe ":'<,'>s/^/ \* /" -			silent exe ":'< s'^ '\/'" -			silent exe ":'>" -			silent put = ' */' -		else -			silent exe ":'<,'>s#^#//#" -		endif -	endif - -endfunction    " ----------  end of function  C_CodeComment  ---------- -" -"---------------------------------------------------------------------- -"  C_StartMultilineComment : Comment -> Code   {{{1 -"---------------------------------------------------------------------- -let s:C_StartMultilineComment	= '^\s*\/\*[\*! ]\=' - -function! C_RemoveCComment( start, end ) - -	if a:end-a:start<1 -		return 0										" lines removed -	endif -	" -	" Is the C-comment complete ? Get length. -	" -	let check				= getline(	a:start ) =~ s:C_StartMultilineComment -	let	linenumber	= a:start+1 -	while linenumber < a:end && getline(	linenumber ) !~ '^\s*\*\/' -		let check				= check && getline(	linenumber ) =~ '^\s*\*[ ]\=' -		let linenumber	= linenumber+1 -	endwhile -	let check = check && getline(	linenumber ) =~ '^\s*\*\/' -	" -	" remove a complete comment -	" -	if check -		exe "silent :".a:start.'   s/'.s:C_StartMultilineComment.'//' -		let	linenumber1	= a:start+1 -		while linenumber1 < linenumber -			exe "silent :".linenumber1.' s/^\s*\*[ ]\=//' -			let linenumber1	= linenumber1+1 -		endwhile -		exe "silent :".linenumber1.'   s/^\s*\*\///' -	endif - -	return linenumber-a:start+1			" lines removed -endfunction    " ----------  end of function  C_RemoveCComment  ---------- -" -"---------------------------------------------------------------------- -"  C_CommentCode : Comment -> Code       {{{1 -"---------------------------------------------------------------------- -function! C_CommentCode(mode) -	if a:mode=="a" -		let	pos1		= line(".") -		let	pos2		= pos1 -	endif -	if a:mode=="v" -		let	pos1		= line("'<") -		let	pos2		= line("'>") -	endif - -	let	removed	= 0 -	" -	let	linenumber=pos1 -	while linenumber <= pos2 -		" Do we have a C++ comment ? -		if getline(	linenumber ) =~ '^\s*//' -			exe "silent :".linenumber.' s#^\s*//##' -			let	removed    = 1 -		endif -		" Do we have a C   comment ? -		if removed == 0 && getline(	linenumber ) =~ s:C_StartMultilineComment -			let removed = C_RemoveCComment(linenumber,pos2) -		endif - -		if removed!=0 -			let linenumber = linenumber+removed -			let	removed    = 0 -		else -			let linenumber = linenumber+1 -		endif -	endwhile -endfunction    " ----------  end of function  C_CommentCode  ---------- -" -"---------------------------------------------------------------------- -"  C_CommentCppToC : C++ Comment -> C Comment       {{{1 -"  Removes trailing whitespaces. -"---------------------------------------------------------------------- -function! C_CommentCppToC() -		silent! exe ':s#\/\/\s*\(.*\)\s*$#/* \1 */#' -endfunction    " ----------  end of function  C_CommentCppToC  ---------- -" -"---------------------------------------------------------------------- -"  C_CommentCToCpp : C Comment -> C++ Comment       {{{1 -"  Changes the first comment in case of multiple comments: -"    xxxx;               /*  */ /*  */ -"    xxxx;               //  /*  */ -"  Removes trailing whitespaces. -"---------------------------------------------------------------------- -function! C_CommentCToCpp() -		silent! exe ':s!\/\*\s*\(.\{-}\)\*\/!\/\/ \1!' -		silent! exe ':s!\s*$!!' -endfunction    " ----------  end of function  C_CommentCToCpp  ---------- -" -"===================================================================================== -"----- Menu : Statements ----------------------------------------------------------- -"===================================================================================== -" -"------------------------------------------------------------------------------ -"  C_PPIf0 : #if 0 .. #endif        {{{1 -"------------------------------------------------------------------------------ -function! C_PPIf0 (mode) -	" -	let	s:C_If0_Counter	= 0 -	let	save_line					= line(".") -	let	actual_line				= 0 -	" -	" search for the maximum option number (if any) -	" -	normal gg -	while actual_line < search( s:C_If0_Txt."\\d\\+" ) -		let actual_line	= line(".") -	 	let actual_opt  = matchstr( getline(actual_line), s:C_If0_Txt."\\d\\+" ) -		let actual_opt  = strpart( actual_opt, strlen(s:C_If0_Txt),strlen(actual_opt)-strlen(s:C_If0_Txt)) -		if s:C_If0_Counter < actual_opt -			let	s:C_If0_Counter = actual_opt -		endif -	endwhile -	let	s:C_If0_Counter = s:C_If0_Counter+1 -	silent exe ":".save_line -	" -	if a:mode=='a' -		let zz=    "\n#if  0     ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n" -		let zz= zz."\n#endif     ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n\n" -		put =zz -		normal 4k -	endif - -	if a:mode=='v' -		let	pos1	= line("'<") -		let	pos2	= line("'>") -		let zz=      "#endif     ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n\n" -		exe ":".pos2."put =zz" -		let zz=    "\n#if  0     ".s:C_Com1." ----- #if 0 : ".s:C_If0_Txt.s:C_If0_Counter." ----- ".s:C_Com2."\n" -		exe ":".pos1."put! =zz" -		" -		if  &foldenable && foldclosed(".") -			normal zv -		endif -	endif - -endfunction    " ----------  end of function C_PPIf0 ---------- -" -"------------------------------------------------------------------------------ -"  C_PPIf0Remove : remove  #if 0 .. #endif        {{{1 -"------------------------------------------------------------------------------ -function! C_PPIf0Remove () -	" -	" cursor on fold: open fold first -	if  &foldenable && foldclosed(".") -		normal zv -	endif -	" -	let frstline	= searchpair( '^\s*#if\s\+0', '', '^\s*#endif\>.\+\<If0Label_', 'bn' ) -  if frstline<=0 -		echohl WarningMsg | echo 'no  #if 0 ... #endif  found or cursor not inside such a directive'| echohl None -    return -  endif -	let lastline	= searchpair( '^\s*#if\s\+0', '', '^\s*#endif\>.\+\<If0Label_', 'n' ) -	if lastline<=0 -		echohl WarningMsg | echo 'no  #if 0 ... #endif  found or cursor not inside such a directive'| echohl None -		return -	endif -  let actualnumber1  = matchstr( getline(frstline), s:C_If0_Txt."\\d\\+" ) -  let actualnumber2  = matchstr( getline(lastline), s:C_If0_Txt."\\d\\+" ) -	if actualnumber1 != actualnumber2 -    echohl WarningMsg | echo 'lines '.frstline.', '.lastline.': comment tags do not match'| echohl None -		return -	endif - -  silent exe ':'.lastline.','.lastline.'d' -	silent exe ':'.frstline.','.frstline.'d' - -endfunction    " ----------  end of function C_PPIf0Remove ---------- -" -"------------------------------------------------------------------------------- -"   C_LegalizeName : replace non-word characters by underscores -"   - multiple whitespaces -"   - multiple non-word characters -"   - multiple underscores -"------------------------------------------------------------------------------- -function! C_LegalizeName ( name ) -	let identifier = substitute(     a:name, '\s\+',  '_', 'g' ) -	let identifier = substitute( identifier, '\W\+',  '_', 'g' ) -	let identifier = substitute( identifier, '_\+', '_', 'g' ) -	return identifier -endfunction    " ----------  end of function C_LegalizeName  ---------- - -"------------------------------------------------------------------------------ -"  C_CodeSnippet : read / edit code snippet       {{{1 -"------------------------------------------------------------------------------ -function! C_CodeSnippet(mode) - -	if isdirectory(s:C_CodeSnippets) -		" -		" read snippet file, put content below current line and indent -		" -		if a:mode == "r" -			if has("browse") && s:C_GuiSnippetBrowser == 'gui' -				let	l:snippetfile=browse(0,"read a code snippet",s:C_CodeSnippets,"") -			else -				let	l:snippetfile=input("read snippet ", s:C_CodeSnippets, "file" ) -			endif -			if filereadable(l:snippetfile) -				let	linesread= line("$") -				let l:old_cpoptions	= &cpoptions " Prevent the alternate buffer from being set to this files -				setlocal cpoptions-=a -				:execute "read ".l:snippetfile -				let &cpoptions	= l:old_cpoptions		" restore previous options -				let	linesread= line("$")-linesread-1 -				if linesread>=0 && match( l:snippetfile, '\.\(ni\|noindent\)$' ) < 0 -				endif -			endif -			if line(".")==2 && getline(1)=~"^$" -				silent exe ":1,1d" -			endif -		endif -		" -		" update current buffer / split window / edit snippet file -		" -		if a:mode == "e" -			if has("browse") && s:C_GuiSnippetBrowser == 'gui' -				let	l:snippetfile	= browse(0,"edit a code snippet",s:C_CodeSnippets,"") -			else -				let	l:snippetfile=input("edit snippet ", s:C_CodeSnippets, "file" ) -			endif -			if l:snippetfile != "" -				:execute "update! | split | edit ".l:snippetfile -			endif -		endif -		" -		" write whole buffer into snippet file -		" -		if a:mode == "w" || a:mode == "wv" -			if has("browse") && s:C_GuiSnippetBrowser == 'gui' -				let	l:snippetfile	= browse(0,"write a code snippet",s:C_CodeSnippets,"") -			else -				let	l:snippetfile=input("write snippet ", s:C_CodeSnippets, "file" ) -			endif -			if l:snippetfile != "" -				if filereadable(l:snippetfile) -					if confirm("File ".l:snippetfile." exists ! Overwrite ? ", "&Cancel\n&No\n&Yes") != 3 -						return -					endif -				endif -				if a:mode == "w" -					:execute ":write! ".l:snippetfile -				else -					:execute ":*write! ".l:snippetfile -				endif -			endif -		endif - -	else -		echo "code snippet directory ".s:C_CodeSnippets." does not exist (please create it)" -	endif -endfunction    " ----------  end of function C_CodeSnippets  ---------- -" -"------------------------------------------------------------------------------ -"  C_help : builtin completion    {{{1 -"------------------------------------------------------------------------------ -function!	C_ForTypeComplete ( ArgLead, CmdLine, CursorPos ) -	" -	" show all types -	if a:ArgLead == '' -		return s:C_ForTypes -	endif -	" -	" show types beginning with a:ArgLead -	let	expansions	= [] -	for item in s:C_ForTypes -		if match( item, '\<'.a:ArgLead.'\w*' ) == 0 -			call add( expansions, item ) -		endif -	endfor -	return	expansions -endfunction    " ----------  end of function C_ForTypeComplete  ---------- -" -"------------------------------------------------------------------------------ -"  C_CodeFor : for (idiom)       {{{1 -"------------------------------------------------------------------------------ -function! C_CodeFor( direction, mode ) -	" -	if a:direction == 'up' -		let	string	= 'INCR.' -	else -		let	string	= 'DECR.' -	endif -	let	string	= C_Input( '[TYPE (expand)] VARIABLE [START [END ['.string.']]] : ', '', 'customlist,C_ForTypeComplete' ) -	if string == '' -		return -	endif -	" -	let part		= [''] -	let nextindex	= -1 -	for item in s:C_ForTypes -		let nextindex	= matchend( string, '^'.item ) -		if nextindex >= 0 -			let part[0]	= item -			let	string	= strpart( string, nextindex-1 ) -		endif -	endfor -	let part	= part + split( string ) - -	if len( part ) 	> 5 -    echohl WarningMsg | echomsg "for loop construction : to many arguments " | echohl None -		return -	endif - -	let missing	= 0 -	while len(part) < 5 -		let part	= part + [''] -		let missing	= missing+1 -	endwhile - -	let [ loopvar_type, loopvar, startval, endval, incval ]	= part - -	if incval=='' -		let incval	= '1' -	endif - -	if a:direction == 'up' -		if endval == '' -			let endval	= 'n' -		endif -		if startval == '' -			let startval	= '0' -		endif -		let zz= 'for ( '.loopvar_type.loopvar.' = '.startval.'; '.loopvar.' < '.endval.'; '.loopvar.' += '.incval." )" -	else -		if endval == '' -			let endval	= '0' -		endif -		if startval == '' -			let startval	= 'n-1' -		endif -		let zz= 'for ( '.loopvar_type.loopvar.' = '.startval.'; '.loopvar.' >= '.endval.'; '.loopvar.' -= '.incval." )" -	endif -	" -	" use internal formatting to avoid conficts when using == below -	let	equalprg_save	= &equalprg -	set equalprg= - -	" ----- normal mode ---------------- -	if a:mode=='a' -		let zz	= zz." {\n}" -		put =zz -		normal k -		normal 2== -	endif -	" ----- visual mode ---------------- -	if a:mode=='v' -		let	pos1	= line("'<") -		let	pos2	= line("'>") -		let	zz	= zz.' {' -		let zz2=    '}' -		exe ":".pos2."put =zz2" -		exe ":".pos1."put! =zz" -		:exe 'normal ='.(pos2-pos1+2).'+' -	endif -	" -	" restore formatter programm -	let &equalprg	= equalprg_save -	" -	" position the cursor -	" -	normal ^ -	if missing == 1 -		let match	= search( '\<'.incval.'\>', 'W', line(".") ) -	else -		if missing == 2 -			let match	= search( '\<'.endval.'\>', 'W', line(".") ) -		else -			if missing == 3 -				let match	= search( '\<'.startval.'\>', 'W', line(".") ) -			endif -		endif -	endif -	" -endfunction    " ----------  end of function C_CodeFor ---------- -" -"------------------------------------------------------------------------------ -"  Handle prototypes       {{{1 -"------------------------------------------------------------------------------ -" -let s:C_Prototype        = [] -let s:C_PrototypeShow    = [] -let s:C_PrototypeCounter = 0 -let s:C_CComment         = '\/\*.\{-}\*\/\s*'		" C comment with trailing whitespaces -																								"  '.\{-}'  any character, non-greedy -let s:C_CppComment       = '\/\/.*$'						" C++ comment -" -"------------------------------------------------------------------------------ -"  C_ProtoPick : pick up (normal/visual)       {{{1 -"------------------------------------------------------------------------------ -function! C_ProtoPick (mode) -	if a:mode=="n" -		" --- normal mode ------------------- -		let	pos1	= line(".") -		let	pos2	= pos1 -	else -		" --- visual mode ------------------- -		let	pos1	= line("'<") -		let	pos2	= line("'>") -	endif -	" -	" remove C/C++-comments, leading and trailing whitespaces, squeeze whitespaces -	" -	let prototyp   = '' -	for linenumber in range( pos1, pos2 ) -		let newline			= getline(linenumber) -		let newline 	  = substitute( newline, s:C_CppComment, "", "" ) " remove C++ comment -		let prototyp		= prototyp." ".newline -	endfor -	" -	let prototyp  = substitute( prototyp, '^\s\+', "", "" )					" remove leading whitespaces -	let prototyp  = substitute( prototyp, s:C_CComment, "", "g" )		" remove (multiline) C comments -	let prototyp  = substitute( prototyp, '\s\+', " ", "g" )				" squeeze whitespaces -	let prototyp  = substitute( prototyp, '\s\+$', "", "" )					" remove trailing whitespaces -	" -	" remove template keyword -	" -	let prototyp  = substitute( prototyp, '^template\s*<\s*class \w\+\s*>\s*', "", "" ) -	" -	let parlist 	= stridx( prototyp, '(' )													" start of the parameter list -	let part1   	= strpart( prototyp, 0, parlist ) -	let part2   	= strpart( prototyp, parlist ) -	" -	" remove the scope res. operator -	" -	let part1		  = substitute( part1, '<\s*\w\+\s*>', "", "g" ) -	let part1   	= substitute( part1, '\<std\s*::', 'std##', 'g' )	" remove the scope res. operator -	let part1   	= substitute( part1, '\<\h\w*\s*::', '', 'g' )		" remove the scope res. operator -	let part1   	= substitute( part1, '\<std##', 'std::', 'g' )		" remove the scope res. operator -	let	prototyp	= part1.part2 -	" -	" remove trailing parts of the function body; add semicolon -	" -	let prototyp	= substitute( prototyp, '\s*{.*$', "", "" ) -	let prototyp	= prototyp.";\n" -	" -	" bookkeeping -	" -	let s:C_PrototypeCounter += 1 -	let s:C_Prototype        += [prototyp] -	let s:C_PrototypeShow    += ["(".s:C_PrototypeCounter.") ".bufname("%")." #  ".prototyp] -	" -	echon	s:C_PrototypeCounter.' prototype' -	if s:C_PrototypeCounter > 1 -		echon	's' -	endif -	" -endfunction    " ---------  end of function C_ProtoPick  ---------- -" -"------------------------------------------------------------------------------ -"  C_ProtoInsert : insert       {{{1 -"------------------------------------------------------------------------------ -function! C_ProtoInsert () -	" -	" use internal formatting to avoid conficts when using == below -	let	equalprg_save	= &equalprg -	set equalprg= -	" -	if s:C_PrototypeCounter > 0 -		for protytype in s:C_Prototype -			put =protytype -		endfor -		let	lines	= s:C_PrototypeCounter	- 1 -		silent exe "normal =".lines."-" -		call C_ProtoClear() -	else -		echo "currently no prototypes available" -	endif -	" -	" restore formatter programm -	let &equalprg	= equalprg_save -	" -endfunction    " ---------  end of function C_ProtoInsert  ---------- -" -"------------------------------------------------------------------------------ -"  C_ProtoClear : clear       {{{1 -"------------------------------------------------------------------------------ -function! C_ProtoClear () -	if s:C_PrototypeCounter > 0 -		let s:C_Prototype        = [] -		let s:C_PrototypeShow    = [] -		if s:C_PrototypeCounter == 1 -			echo	s:C_PrototypeCounter.' prototype deleted' -		else -			echo	s:C_PrototypeCounter.' prototypes deleted' -		endif -		let s:C_PrototypeCounter = 0 -	else -		echo "currently no prototypes available" -	endif -endfunction    " ---------  end of function C_ProtoClear  ---------- -" -"------------------------------------------------------------------------------ -"  C_ProtoShow : show       {{{1 -"------------------------------------------------------------------------------ -function! C_ProtoShow () -	if s:C_PrototypeCounter > 0 -		for protytype in s:C_PrototypeShow -			echo protytype -		endfor -	else -		echo "currently no prototypes available" -	endif -endfunction    " ---------  end of function C_ProtoShow  ---------- -" -"------------------------------------------------------------------------------ -"  C_EscapeBlanks : C_EscapeBlanks       {{{1 -"------------------------------------------------------------------------------ -function! C_EscapeBlanks (arg) -	return  substitute( a:arg, " ", "\\ ", "g" ) -endfunction    " ---------  end of function C_EscapeBlanks  ---------- -" -"------------------------------------------------------------------------------ -"  C_Compile : C_Compile       {{{1 -"------------------------------------------------------------------------------ -"  The standard make program 'make' called by vim is set to the C or C++ compiler -"  and reset after the compilation  (setlocal makeprg=... ). -"  The errorfile created by the compiler will now be read by gvim and -"  the commands cl, cp, cn, ... can be used. -"------------------------------------------------------------------------------ -let s:LastShellReturnCode	= 0			" for compile / link / run only - -function! C_Compile () - -	let s:C_HlMessage = "" -	exe	":cclose" -	let	Sou		= expand("%:p")											" name of the file in the current buffer -	let	Obj		= expand("%:p:r").s:C_ObjExtension	" name of the object -	let SouEsc= escape( Sou, s:escfilename ) -	let ObjEsc= escape( Obj, s:escfilename ) - -	" update : write source file if necessary -	exe	":update" - -	" compilation if object does not exist or object exists and is older then the source -	if !filereadable(Obj) || (filereadable(Obj) && (getftime(Obj) < getftime(Sou))) -		" &makeprg can be a string containing blanks -		let makeprg_saved	= '"'.&makeprg.'"' -		if expand("%:e") == s:C_CExtension -			exe		"setlocal makeprg=".s:C_CCompiler -		else -			exe		"setlocal makeprg=".s:C_CplusCompiler -		endif -		" -		" COMPILATION -		" -		let v:statusmsg = '' -		let	s:LastShellReturnCode	= 0 -		if s:MSWIN -			exe		"make ".s:C_CFlags." \"".SouEsc."\" -o \"".ObjEsc."\"" -		else -			exe		"make ".s:C_CFlags." ".SouEsc." -o ".ObjEsc -		endif -		exe	"setlocal makeprg=".makeprg_saved -		if v:statusmsg == '' -			let s:C_HlMessage = "'".Obj."' : compilation successful" -		endif -		if v:shell_error != 0 -			let	s:LastShellReturnCode	= v:shell_error -		endif -		" -		" open error window if necessary -		:redraw! -		exe	":botright cwindow" -	else -		let s:C_HlMessage = " '".Obj."' is up to date " -	endif - -endfunction    " ----------  end of function C_Compile ---------- -" -"------------------------------------------------------------------------------ -"  C_Link : C_Link       {{{1 -"------------------------------------------------------------------------------ -"  The standard make program which is used by gvim is set to the compiler -"  (for linking) and reset after linking. -" -"  calls: C_Compile -"------------------------------------------------------------------------------ -function! C_Link () - -	call	C_Compile() -	:redraw! -	if s:LastShellReturnCode != 0 -		let	s:LastShellReturnCode	=  0 -		return -	endif - -	let s:C_HlMessage = "" -	let	Sou		= expand("%:p")						       		" name of the file (full path) -	let	Obj		= expand("%:p:r").s:C_ObjExtension	" name of the object file -	let	Exe		= expand("%:p:r").s:C_ExeExtension	" name of the executable -	let ObjEsc= escape( Obj, s:escfilename ) -	let ExeEsc= escape( Exe, s:escfilename ) - -	" no linkage if: -	"   executable exists -	"   object exists -	"   source exists -	"   executable newer then object -	"   object newer then source - -	if    filereadable(Exe)                && -      \ filereadable(Obj)                && -      \ filereadable(Sou)                && -      \ (getftime(Exe) >= getftime(Obj)) && -      \ (getftime(Obj) >= getftime(Sou)) -		let s:C_HlMessage = " '".Exe."' is up to date " -		return -	endif - -	" linkage if: -	"   object exists -	"   source exists -	"   object newer then source - -	if filereadable(Obj) && (getftime(Obj) >= getftime(Sou)) -		let makeprg_saved='"'.&makeprg.'"' -		if expand("%:e") == s:C_CExtension -			exe		"setlocal makeprg=".s:C_CCompiler -		else -			exe		"setlocal makeprg=".s:C_CplusCompiler -		endif -		let	s:LastShellReturnCode	= 0 -		let v:statusmsg = '' -		if s:MSWIN -			silent exe "make ".s:C_LFlags." ".s:C_Libs." -o \"".ExeEsc."\" \"".ObjEsc."\"" -		else -			silent exe "make ".s:C_LFlags." ".s:C_Libs." -o ".ExeEsc." ".ObjEsc -		endif -		if v:statusmsg == '' -			let s:C_HlMessage = "'".Exe."' : linking successful" -		else -			let s:C_HlMessage = "'".Exe."' : linking NOT successful" -		endif -		if v:shell_error != 0 -			let	s:LastShellReturnCode	= v:shell_error -		endif -		exe	"setlocal makeprg=".makeprg_saved -	endif -endfunction    " ----------  end of function C_Link ---------- -" -"------------------------------------------------------------------------------ -"  C_Run : 	C_Run       {{{1 -"  calls: C_Link -"------------------------------------------------------------------------------ -" -let s:C_OutputBufferName   = "C-Output" -let s:C_OutputBufferNumber = -1 -let s:C_RunMsg1						 ="' does not exist or is not executable or object/source older then executable" -" -function! C_Run () -" -	let s:C_HlMessage = "" -	let Sou  		= expand("%:p")														" name of the source file -	let Obj  		= expand("%:p:r").s:C_ObjExtension				" name of the object file -	let Exe  		= expand("%:p:r").s:C_ExeExtension				" name of the executable -	let ExeEsc  = escape( Exe, s:escfilename )						" name of the executable, escaped -	" -	let l:arguments     = exists("b:C_CmdLineArgs") ? b:C_CmdLineArgs : '' -	" -	let	l:currentbuffer	= bufname("%") -	" -	"============================================================================== -	"  run : run from the vim command line -	"============================================================================== -	if s:C_OutputGvim == "vim" -		" -		silent call C_Link() -		if s:LastShellReturnCode == 0 -			" clear the last linking message if any" -			let s:C_HlMessage = "" -			call C_HlMessage() -		endif -		" -		if	executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou) -			if s:MSWIN -				exe		"!\"".ExeEsc."\" ".l:arguments -			else -				exe		"!".ExeEsc." ".l:arguments -			endif -		else -			echomsg "file '".Exe.s:C_RunMsg1 -		endif - -	endif -	" -	"============================================================================== -	"  run : redirect output to an output buffer -	"============================================================================== -	if s:C_OutputGvim == "buffer" -		let	l:currentbuffernr	= bufnr("%") -		" -		silent call C_Link() -		" -		if l:currentbuffer ==  bufname("%") -			" -			" -			if bufloaded(s:C_OutputBufferName) != 0 && bufwinnr(s:C_OutputBufferNumber)!=-1 -				exe bufwinnr(s:C_OutputBufferNumber) . "wincmd w" -				" buffer number may have changed, e.g. after a 'save as' -				if bufnr("%") != s:C_OutputBufferNumber -					let s:C_OutputBufferNumber	= bufnr(s:C_OutputBufferName) -					exe ":bn ".s:C_OutputBufferNumber -				endif -			else -				silent exe ":new ".s:C_OutputBufferName -				let s:C_OutputBufferNumber=bufnr("%") -				setlocal buftype=nofile -				setlocal noswapfile -				setlocal syntax=none -				setlocal bufhidden=delete -				setlocal tabstop=8 -			endif -			" -			" run programm -			" -			setlocal	modifiable -			if	executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou) -				if s:MSWIN -					exe		"%!\"".ExeEsc."\" ".l:arguments -				else -					exe		"%!".ExeEsc." ".l:arguments -				endif -				setlocal	nomodifiable -				" -				if winheight(winnr()) >= line("$") -					exe bufwinnr(l:currentbuffernr) . "wincmd w" -				endif -			else -				setlocal	nomodifiable -				:close -				echomsg "file '".Exe.s:C_RunMsg1 -			endif -			" -		endif -	endif -	" -	"============================================================================== -	"  run : run in a detached xterm  (not available for MS Windows) -	"============================================================================== -	if s:C_OutputGvim == "xterm" -		" -		silent call C_Link() -		" -		if	executable(Exe) && getftime(Exe) >= getftime(Obj) && getftime(Obj) >= getftime(Sou) -			if s:MSWIN -				exe		"!\"".ExeEsc."\" ".l:arguments -			else -				silent exe '!xterm -title '.ExeEsc.' '.s:C_XtermDefaults.' -e '.s:C_Wrapper.' '.ExeEsc.' '.l:arguments.' &' -				:redraw! -			endif -		else -			echomsg "file '".Exe.s:C_RunMsg1 -		endif -	endif - -		if v:statusmsg == '' -			let s:C_HlMessage = "" -		endif -endfunction    " ----------  end of function C_Run ---------- -" -"------------------------------------------------------------------------------ -"  C_Arguments : Arguments for the executable       {{{1 -"------------------------------------------------------------------------------ -function! C_Arguments () -	let	Exe		  = expand("%:r").s:C_ExeExtension -  if Exe == "" -		redraw -		echohl WarningMsg | echo "no file name " | echohl None -		return -  endif -	let	prompt	= 'command line arguments for "'.Exe.'" : ' -	if exists("b:C_CmdLineArgs") -		let	b:C_CmdLineArgs= C_Input( prompt, b:C_CmdLineArgs, 'file' ) -	else -		let	b:C_CmdLineArgs= C_Input( prompt , "", 'file' ) -	endif -endfunction    " ----------  end of function C_Arguments ---------- -" -"---------------------------------------------------------------------- -"  C_Toggle_Gvim_Xterm : change output destination       {{{1 -"---------------------------------------------------------------------- -function! C_Toggle_Gvim_Xterm () - -	if s:C_OutputGvim == "vim" -		if has("gui_running") -			exe "aunmenu  <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm' -			exe "amenu    <silent>  ".s:Run.'.&output:\ BUFFER->xterm->vim              :call C_Toggle_Gvim_Xterm()<CR><CR>' -			exe "imenu    <silent>  ".s:Run.'.&output:\ BUFFER->xterm->vim         <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -		endif -		let	s:C_OutputGvim	= "buffer" -	else -		if s:C_OutputGvim == "buffer" -			if has("gui_running") -				exe "aunmenu  <silent>  ".s:Run.'.&output:\ BUFFER->xterm->vim' -				if (!s:MSWIN) -					exe "amenu    <silent>  ".s:Run.'.&output:\ XTERM->vim->buffer            :call C_Toggle_Gvim_Xterm()<CR><CR>' -					exe "imenu    <silent>  ".s:Run.'.&output:\ XTERM->vim->buffer       <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -				else -					exe "amenu    <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm            :call C_Toggle_Gvim_Xterm()<CR><CR>' -					exe "imenu    <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm       <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -				endif -			endif -			if (!s:MSWIN) && (s:C_Display != '') -				let	s:C_OutputGvim	= "xterm" -			else -				let	s:C_OutputGvim	= "vim" -			endif -		else -			" ---------- output : xterm -> gvim -			if has("gui_running") -				exe "aunmenu  <silent>  ".s:Run.'.&output:\ XTERM->vim->buffer' -				exe "amenu    <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm            :call C_Toggle_Gvim_Xterm()<CR><CR>' -				exe "imenu    <silent>  ".s:Run.'.&output:\ VIM->buffer->xterm       <C-C>:call C_Toggle_Gvim_Xterm()<CR><CR>' -			endif -			let	s:C_OutputGvim	= "vim" -		endif -	endif -	echomsg "output destination is '".s:C_OutputGvim."'" - -endfunction    " ----------  end of function C_Toggle_Gvim_Xterm ---------- -" -"------------------------------------------------------------------------------ -"  C_XtermSize : xterm geometry       {{{1 -"------------------------------------------------------------------------------ -function! C_XtermSize () -	let regex	= '-geometry\s\+\d\+x\d\+' -	let geom	= matchstr( s:C_XtermDefaults, regex ) -	let geom	= matchstr( geom, '\d\+x\d\+' ) -	let geom	= substitute( geom, 'x', ' ', "" ) -	let	answer= C_Input("   xterm size (COLUMNS LINES) : ", geom ) -	while match(answer, '^\s*\d\+\s\+\d\+\s*$' ) < 0 -		let	answer= C_Input(" + xterm size (COLUMNS LINES) : ", geom ) -	endwhile -	let answer  = substitute( answer, '\s\+', "x", "" )						" replace inner whitespaces -	let s:C_XtermDefaults	= substitute( s:C_XtermDefaults, regex, "-geometry ".answer , "" ) -endfunction    " ----------  end of function C_XtermSize ---------- -" -"------------------------------------------------------------------------------ -"  C_MakeArguments : run make(1)       {{{1 -"------------------------------------------------------------------------------ - -let s:C_MakeCmdLineArgs   = ""     " command line arguments for Run-make; initially empty - -function! C_MakeArguments () -	let	s:C_MakeCmdLineArgs= C_Input("make command line arguments : ",s:C_MakeCmdLineArgs ) -endfunction    " ----------  end of function C_MakeArguments ---------- -" -function! C_Make() -	" update : write source file if necessary -	exe	":update" -	" run make -	exe		":!make ".s:C_MakeCmdLineArgs -endfunction    " ----------  end of function C_Make ---------- -" -"------------------------------------------------------------------------------ -"  C_SplintArguments : splint command line arguments       {{{1 -"------------------------------------------------------------------------------ -function! C_SplintArguments () -	if s:C_SplintIsExecutable==0 -		let s:C_HlMessage = ' Splint is not executable or not installed! ' -	else -		let	prompt	= 'Splint command line arguments for "'.expand("%").'" : ' -		if exists("b:C_SplintCmdLineArgs") -			let	b:C_SplintCmdLineArgs= C_Input( prompt, b:C_SplintCmdLineArgs ) -		else -			let	b:C_SplintCmdLineArgs= C_Input( prompt , "" ) -		endif -	endif -endfunction    " ----------  end of function C_SplintArguments ---------- -" -"------------------------------------------------------------------------------ -"  C_SplintCheck : run splint(1)        {{{1 -"------------------------------------------------------------------------------ -function! C_SplintCheck () -	if s:C_SplintIsExecutable==0 -		let s:C_HlMessage = ' Splint is not executable or not installed! ' -		return -	endif -	let	l:currentbuffer=bufname("%") -	if &filetype != "c" && &filetype != "cpp" -		let s:C_HlMessage = ' "'.l:currentbuffer.'" seems not to be a C/C++ file ' -		return -	endif -	let s:C_HlMessage = "" -	exe	":cclose" -	silent exe	":update" -	let makeprg_saved='"'.&makeprg.'"' -	" Windows seems to need this: -	if	s:MSWIN -		:compiler splint -	endif -	:setlocal makeprg=splint -	" -	let l:arguments  = exists("b:C_SplintCmdLineArgs") ? b:C_SplintCmdLineArgs : ' ' -	silent exe	"make ".l:arguments." ".escape(l:currentbuffer,s:escfilename) -	exe	"setlocal makeprg=".makeprg_saved -	exe	":botright cwindow" -	" -	" message in case of success -	" -	if l:currentbuffer == bufname("%") -		let s:C_HlMessage = " Splint --- no warnings for : ".l:currentbuffer -	endif -endfunction    " ----------  end of function C_SplintCheck ---------- -" -"------------------------------------------------------------------------------ -"  C_CodeCheckArguments : CodeCheck command line arguments       {{{1 -"------------------------------------------------------------------------------ -function! C_CodeCheckArguments () -	if s:C_CodeCheckIsExecutable==0 -		let s:C_HlMessage = ' CodeCheck is not executable or not installed! ' -	else -		let	prompt	= 'CodeCheck command line arguments for "'.expand("%").'" : ' -		if exists("b:C_CodeCheckCmdLineArgs") -			let	b:C_CodeCheckCmdLineArgs= C_Input( prompt, b:C_CodeCheckCmdLineArgs ) -		else -			let	b:C_CodeCheckCmdLineArgs= C_Input( prompt , s:C_CodeCheckOptions ) -		endif -	endif -endfunction    " ----------  end of function C_CodeCheckArguments ---------- -" -"------------------------------------------------------------------------------ -"  C_CodeCheck : run CodeCheck       {{{1 -"------------------------------------------------------------------------------ -function! C_CodeCheck () -	if s:C_CodeCheckIsExecutable==0 -		let s:C_HlMessage = ' CodeCheck is not executable or not installed! ' -		return -	endif -	let	l:currentbuffer=bufname("%") -	if &filetype != "c" && &filetype != "cpp" -		let s:C_HlMessage = ' "'.l:currentbuffer.'" seems not to be a C/C++ file ' -		return -	endif -	let s:C_HlMessage = "" -	exe	":cclose" -	silent exe	":update" -	let makeprg_saved='"'.&makeprg.'"' -	exe	"setlocal makeprg=".s:C_CodeCheckExeName -	" -	" match the splint error messages (quickfix commands) -	" ignore any lines that didn't match one of the patterns -	" -	:setlocal errorformat=%f(%l)%m -	" -	let l:arguments  = exists("b:C_CodeCheckCmdLineArgs") ? b:C_CodeCheckCmdLineArgs : "" -	if l:arguments == "" -		let l:arguments	=	s:C_CodeCheckOptions -	endif -	exe	":make ".l:arguments." ".escape( l:currentbuffer, s:escfilename ) -	exe	':setlocal errorformat=' -	exe	":setlocal makeprg=".makeprg_saved -	exe	":botright cwindow" -	" -	" message in case of success -	" -	if l:currentbuffer == bufname("%") -		let s:C_HlMessage = " CodeCheck --- no warnings for : ".l:currentbuffer -	endif -endfunction    " ----------  end of function C_CodeCheck ---------- -" -"------------------------------------------------------------------------------ -"  C_Indent : run indent(1)       {{{1 -"------------------------------------------------------------------------------ -" -function! C_Indent ( ) -	if !executable("indent") -		echomsg 'indent is not executable or not installed!' -		return -	endif -	let	l:currentbuffer=expand("%:p") -	if &filetype != "c" && &filetype != "cpp" -		echomsg '"'.l:currentbuffer.'" seems not to be a C/C++ file ' -		return -	endif -	if C_Input("indent whole file [y/n/Esc] : ", "y" ) != "y" -		return -	endif -	:update - -	exe	":cclose" -	if s:MSWIN -		silent exe ":%!indent " -	else -		silent exe ":%!indent 2> ".s:C_IndentErrorLog -		redraw! -		if getfsize( s:C_IndentErrorLog ) > 0 -			exe ':edit! '.s:C_IndentErrorLog -			let errorlogbuffer	= bufnr("%") -			exe ':%s/^indent: Standard input/indent: '.escape( l:currentbuffer, '/' ).'/' -			setlocal errorformat=indent:\ %f:%l:%m -			:cbuffer -			exe ':bdelete! '.errorlogbuffer -			exe	':botright cwindow' -		else -			echomsg 'File "'.l:currentbuffer.'" reformatted.' -		endif -		setlocal errorformat= -	endif - -endfunction    " ----------  end of function C_Indent ---------- -" -"------------------------------------------------------------------------------ -"  C_HlMessage : indent message     {{{1 -"------------------------------------------------------------------------------ -function! C_HlMessage () -	redraw! -	echohl Search -	echo s:C_HlMessage -	echohl None -endfunction    " ----------  end of function C_HlMessage ---------- -" -"------------------------------------------------------------------------------ -"  C_Settings : settings     {{{1 -"------------------------------------------------------------------------------ -function! C_Settings () -	let	txt =     " C/C++-Support settings\n\n" -	let txt = txt.'                   author :  "'.s:C_Macro['|AUTHOR|']."\"\n" -	let txt = txt.'                 initials :  "'.s:C_Macro['|AUTHORREF|']."\"\n" -	let txt = txt.'                    email :  "'.s:C_Macro['|EMAIL|']."\"\n" -	let txt = txt.'                  company :  "'.s:C_Macro['|COMPANY|']."\"\n" -	let txt = txt.'                  project :  "'.s:C_Macro['|PROJECT|']."\"\n" -	let txt = txt.'         copyright holder :  "'.s:C_Macro['|COPYRIGHTHOLDER|']."\"\n" -	let txt = txt.'         C / C++ compiler :  '.s:C_CCompiler.' / '.s:C_CplusCompiler."\n" -	let txt = txt.'         C file extension :  "'.s:C_CExtension.'"  (everything else is C++)'."\n" -	let txt = txt.'    extension for objects :  "'.s:C_ObjExtension."\"\n" -	let txt = txt.'extension for executables :  "'.s:C_ExeExtension."\"\n" -	let txt = txt.'           compiler flags :  "'.s:C_CFlags."\"\n" -	let txt = txt.'             linker flags :  "'.s:C_LFlags."\"\n" -	let txt = txt.'                libraries :  "'.s:C_Libs."\"\n" -	let txt = txt.'   code snippet directory :  "'.s:C_CodeSnippets."\"\n" -	" ----- template files  ------------------------ -	let txt = txt.'           template style :  "'.s:C_ActualStyle."\"\n" -	if s:installation == 'system' -		let txt = txt.'global template directory :  '.s:C_GlobalTemplateDir."\n" -		if filereadable( s:C_LocalTemplateFile ) -			let txt = txt.' local template directory :  '.s:C_LocalTemplateDir."\n" -		endif -	else -		let txt = txt.' local template directory :  '.s:C_GlobalTemplateDir."\n" -	endif -	if	!s:MSWIN -		let txt = txt.'           xterm defaults :  '.s:C_XtermDefaults."\n" -	endif -	" ----- dictionaries ------------------------ -	if g:C_Dictionary_File != "" -		let ausgabe= &dictionary -		let ausgabe= substitute( ausgabe, ",", ",\n                           + ", "g" ) -		let txt = txt."       dictionary file(s) :  ".ausgabe."\n" -	endif -	let txt = txt.'     current output dest. :  '.s:C_OutputGvim."\n" -	" ----- splint ------------------------------ -	if s:C_SplintIsExecutable==1 -		if exists("b:C_SplintCmdLineArgs") -			let ausgabe = b:C_SplintCmdLineArgs -		else -			let ausgabe = "" -		endif -		let txt = txt."        splint options(s) :  ".ausgabe."\n" -	endif -	" ----- code check -------------------------- -	if s:C_CodeCheckIsExecutable==1 -		if exists("b:C_CodeCheckCmdLineArgs") -			let ausgabe = b:C_CodeCheckCmdLineArgs -		else -			let ausgabe = s:C_CodeCheckOptions -		endif -		let txt = txt."CodeCheck (TM) options(s) :  ".ausgabe."\n" -	endif -	let txt = txt."\n" -	let	txt = txt."__________________________________________________________________________\n" -	let	txt = txt." C/C++-Support, Version ".g:C_Version." / Dr.-Ing. Fritz Mehner / mehner@fh-swf.de\n\n" -	echo txt -endfunction    " ----------  end of function C_Settings ---------- -" -"------------------------------------------------------------------------------ -"  C_Hardcopy : hardcopy     {{{1 -"    MSWIN : a printer dialog is displayed -"    other : print PostScript to file -"------------------------------------------------------------------------------ -function! C_Hardcopy (mode) -  let outfile = expand("%") -  if outfile == "" -		let s:C_HlMessage = 'Buffer has no name.' -		call C_HlMessage() -  endif -	let outdir	= getcwd() -	if filewritable(outdir) != 2 -		let outdir	= $HOME -	endif -	if  !s:MSWIN -		let outdir	= outdir.'/' -	endif -  let old_printheader=&printheader -  exe  ':set printheader='.s:C_Printheader -  " ----- normal mode ---------------- -  if a:mode=="n" -    silent exe  'hardcopy > '.outdir.outfile.'.ps' -    if  !s:MSWIN -      echo 'file "'.outfile.'" printed to "'.outdir.outfile.'.ps"' -    endif -  endif -  " ----- visual mode ---------------- -  if a:mode=="v" -    silent exe  "*hardcopy > ".outdir.outfile.".ps" -    if  !s:MSWIN -      echo 'file "'.outfile.'" (lines '.line("'<").'-'.line("'>").') printed to "'.outdir.outfile.'.ps"' -    endif -  endif -  exe  ':set printheader='.escape( old_printheader, ' %' ) -endfunction   " ---------- end of function  C_Hardcopy  ---------- -" -"------------------------------------------------------------------------------ -"  C_HelpCsupport : help csupport     {{{1 -"------------------------------------------------------------------------------ -function! C_HelpCsupport () -	try -		:help csupport -	catch -		exe ':helptags '.s:plugin_dir.'doc' -		:help csupport -	endtry -endfunction    " ----------  end of function C_HelpCsupport ---------- -" -"------------------------------------------------------------------------------ -"  C_Help : lookup word under the cursor or ask    {{{1 -"------------------------------------------------------------------------------ -" -let s:C_DocBufferName       = "C_HELP" -let s:C_DocHelpBufferNumber = -1 -" -function! C_Help( type ) - -	let cuc		= getline(".")[col(".") - 1]		" character under the cursor -	let	item	= expand("<cword>")							" word under the cursor -	if cuc == '' || item == "" || match( item, cuc ) == -1 -		let	item=C_Input('name of the manual page : ', '' ) -	endif - -	if item == "" -		return -	endif -	"------------------------------------------------------------------------------ -	"  replace buffer content with bash help text -	"------------------------------------------------------------------------------ -	" -	" jump to an already open bash help window or create one -	" -	if bufloaded(s:C_DocBufferName) != 0 && bufwinnr(s:C_DocHelpBufferNumber) != -1 -		exe bufwinnr(s:C_DocHelpBufferNumber) . "wincmd w" -		" buffer number may have changed, e.g. after a 'save as' -		if bufnr("%") != s:C_DocHelpBufferNumber -			let s:C_DocHelpBufferNumber=bufnr(s:C_OutputBufferName) -			exe ":bn ".s:C_DocHelpBufferNumber -		endif -	else -		exe ":new ".s:C_DocBufferName -		let s:C_DocHelpBufferNumber=bufnr("%") -		setlocal buftype=nofile -		setlocal noswapfile -		setlocal bufhidden=delete -		setlocal filetype=sh		" allows repeated use of <S-F1> -		setlocal syntax=OFF -	endif -	setlocal	modifiable -	" -	if a:type == 'm'  -		" -		" Is there more than one manual ? -		" -		let manpages	= system( s:C_Man.' -k '.item ) -		if v:shell_error -			echomsg	"Shell command '".s:C_Man." -k ".item."' failed." -			:close -			return -		endif -		let	catalogs	= split( manpages, '\n', ) -		let	manual		= {} -		" -		" Select manuals where the name exactly matches -		" -		for line in catalogs -			if line =~ '^'.item.'\s\+('  -				let	itempart	= split( line, '\s\+' ) -				let	catalog		= itempart[1][1:-2] -				if match( catalog, '.p$' ) == -1 -					let	manual[catalog]	= catalog -				endif -			endif -		endfor -		" -		" Build a selection list if there are more than one manual -		" -		let	catalog	= "" -		if len(keys(manual)) > 1 -			for key in keys(manual) -				echo ' '.item.'  '.key -			endfor -			let defaultcatalog	= '' -			if has_key( manual, '3' ) -				let defaultcatalog	= '3' -			else -				if has_key( manual, '2' ) -					let defaultcatalog	= '2' -				endif -			endif -			let	catalog	= input( 'select manual section (<Enter> cancels) : ', defaultcatalog ) -			if ! has_key( manual, catalog ) -				:close -				:redraw -				echomsg	"no appropriate manual section '".catalog."'" -				return -			endif -		endif - -		set filetype=man -		silent exe ":%!".s:C_Man." ".catalog." ".item - -	endif - -	setlocal nomodifiable -endfunction		" ---------- end of function  C_Help  ---------- - -"------------------------------------------------------------------------------ -"  C_CreateGuiMenus     {{{1 -"------------------------------------------------------------------------------ -let s:C_MenuVisible = 0								" state variable controlling the C-menus -" -function! C_CreateGuiMenus () -	if s:C_MenuVisible != 1 -		aunmenu <silent> &Tools.Load\ C\ Support -		amenu   <silent> 40.1000 &Tools.-SEP100- : -		amenu   <silent> 40.1030 &Tools.Unload\ C\ Support <C-C>:call C_RemoveGuiMenus()<CR> -		call C_InitMenus() -		let s:C_MenuVisible = 1 -	endif -endfunction    " ----------  end of function C_CreateGuiMenus  ---------- - -"------------------------------------------------------------------------------ -"  C_ToolMenu     {{{1 -"------------------------------------------------------------------------------ -function! C_ToolMenu () -	amenu   <silent> 40.1000 &Tools.-SEP100- : -	amenu   <silent> 40.1030 &Tools.Load\ C\ Support      :call C_CreateGuiMenus()<CR> -	imenu   <silent> 40.1030 &Tools.Load\ C\ Support <C-C>:call C_CreateGuiMenus()<CR> -endfunction    " ----------  end of function C_ToolMenu  ---------- - -"------------------------------------------------------------------------------ -"  C_RemoveGuiMenus     {{{1 -"------------------------------------------------------------------------------ -function! C_RemoveGuiMenus () -	if s:C_MenuVisible == 1 -		if s:C_Root == "" -			aunmenu <silent> Comments -			aunmenu <silent> Statements -			aunmenu <silent> Preprocessor -			aunmenu <silent> Idioms -			aunmenu <silent> Snippets -			aunmenu <silent> C++ -			aunmenu <silent> Run -		else -			exe "aunmenu <silent> ".s:C_Root -		endif -		" -		aunmenu <silent> &Tools.Unload\ C\ Support -		call C_ToolMenu() -		" -		let s:C_MenuVisible = 0 -	endif -endfunction    " ----------  end of function C_RemoveGuiMenus  ---------- - -"------------------------------------------------------------------------------ -"  C_RereadTemplates     {{{1 -"  rebuild commands and the menu from the (changed) template file -"------------------------------------------------------------------------------ -function! C_RereadTemplates () -		let s:style						= 'default' -    let s:C_Template     	= { 'default' : {} } -    let s:C_FileVisited  	= [] -    call C_ReadTemplates(s:C_GlobalTemplateFile) -    echomsg "templates rebuilt from '".s:C_GlobalTemplateFile."'" -		" -		if s:installation == 'system' && filereadable( s:C_LocalTemplateFile ) -			call C_ReadTemplates( s:C_LocalTemplateFile ) -			echomsg " and from '".s:C_LocalTemplateFile."'" -		endif -endfunction    " ----------  end of function C_RereadTemplates  ---------- - -"------------------------------------------------------------------------------ -"  C_BrowseTemplateFiles     {{{1 -"------------------------------------------------------------------------------ -function! C_BrowseTemplateFiles ( type ) -	if filereadable( eval( 's:C_'.a:type.'TemplateFile' ) ) -		if has("browse") && s:C_GuiTemplateBrowser == 'gui' -			let	l:templatefile	= browse(0,"edit a template file", eval('s:C_'.a:type.'TemplateDir'), "" ) -		else -				let	l:templatefile	= '' -			if s:C_GuiTemplateBrowser == 'explorer' -				exe ':Explore '.eval('s:C_'.a:type.'TemplateDir') -			endif -			if s:C_GuiTemplateBrowser == 'commandline' -				let	l:templatefile	= input("edit a template file", eval('s:C_'.a:type.'TemplateDir'), "file" ) -			endif -		endif -		if l:templatefile != "" -			:execute "update! | split | edit ".l:templatefile -		endif -	else -		echomsg a:type." template file not readable." -	endif -endfunction    " ----------  end of function C_BrowseTemplateFiles  ---------- - -"------------------------------------------------------------------------------ -"  C_EditTemplates     {{{1 -"------------------------------------------------------------------------------ -function! C_EditTemplates ( type ) -	" -	if a:type == 'global' -		if s:installation == 'system' -			call C_BrowseTemplateFiles('Global') -		else -			echomsg "C/C++-Support is user installed: no global template file" -		endif -	endif -	" -	if a:type == 'local' -		if s:installation == 'system' -			call C_BrowseTemplateFiles('Local') -		else -			call C_BrowseTemplateFiles('Global') -		endif -	endif -	" -endfunction    " ----------  end of function C_EditTemplates  ---------- -" -"------------------------------------------------------------------------------ -"  C_ReadTemplates     {{{1 -"  read the template file(s), build the macro and the template dictionary -" -"------------------------------------------------------------------------------ -let	s:style			= 'default' -function! C_ReadTemplates ( templatefile ) - -  if !filereadable( a:templatefile ) -    echohl WarningMsg -    echomsg "C/C++ template file '".a:templatefile."' does not exist or is not readable" -    echohl None -    return -  endif - -	let	skipmacros	= 0 -  let s:C_FileVisited  += [a:templatefile] - -  "------------------------------------------------------------------------------ -  "  read template file, start with an empty template dictionary -  "------------------------------------------------------------------------------ - -  let item  = '' -	let	skipline	= 0 -  for line in readfile( a:templatefile ) -		" if not a comment : -    if line !~ s:C_MacroCommentRegex -      " -			"------------------------------------------------------------------------------- -			" IF |STYLE| IS ... -			"------------------------------------------------------------------------------- -      " -      let string  = matchlist( line, s:C_TemplateIf ) -      if !empty(string)  -				if !has_key( s:C_Template, string[1] ) -					" new s:style -					let	s:style	= string[1] -					let	s:C_Template[s:style]	= {} -					continue -				endif -			endif -			" -			"------------------------------------------------------------------------------- -			" ENDIF -			"------------------------------------------------------------------------------- -      " -      let string  = matchlist( line, s:C_TemplateEndif ) -      if !empty(string) -				let	s:style	= 'default' -				continue -			endif -      " -      " macros and file includes -      " -      let string  = matchlist( line, s:C_MacroLineRegex ) -      if !empty(string) && skipmacros == 0 -        let key = '|'.string[1].'|' -        let val = string[2] -        let val = substitute( val, '\s\+$', '', '' ) -        let val = substitute( val, "[\"\']$", '', '' ) -        let val = substitute( val, "^[\"\']", '', '' ) -        " -        if key == '|includefile|' && count( s:C_FileVisited, val ) == 0 -					let path   = fnamemodify( a:templatefile, ":p:h" ) -          call C_ReadTemplates( path.'/'.val )    " recursive call -        else -          let s:C_Macro[key] = escape( val, '&' ) -        endif -        continue                                            " next line -      endif -      " -      " template header -      " -      let name  = matchstr( line, s:C_TemplateLineRegex ) -      " -      if name != '' -        let part  = split( name, '\s*==\s*') -        let item  = part[0] -        if has_key( s:C_Template[s:style], item ) && s:C_TemplateOverwrittenMsg == 'yes' -          echomsg "existing C/C++ template '".item."' overwritten" -        endif -        let s:C_Template[s:style][item] = '' -				let skipmacros	= 1 -        " -        let s:C_Attribute[item] = 'below' -        if has_key( s:Attribute, get( part, 1, 'NONE' ) ) -          let s:C_Attribute[item] = part[1] -        endif -      else -        if item != '' -          let s:C_Template[s:style][item] .= line."\n" -        endif -      endif -    endif -		" -  endfor	" ---------  read line  --------- - -	let s:C_ActualStyle	= 'default' -	if s:C_Macro['|STYLE|'] != '' -		let s:C_ActualStyle	= s:C_Macro['|STYLE|'] -	endif -	let s:C_ActualStyleLast	= s:C_ActualStyle - -	call C_SetSmallCommentStyle() -endfunction    " ----------  end of function C_ReadTemplates  ---------- - -"------------------------------------------------------------------------------ -" C_Style{{{1 -" ex-command CStyle : callback function -"------------------------------------------------------------------------------ -function! C_Style ( style ) -	let lstyle  = substitute( a:style, '^\s\+', "", "" )	" remove leading whitespaces -	let lstyle  = substitute( lstyle, '\s\+$', "", "" )		" remove trailing whitespaces -	if has_key( s:C_Template, lstyle ) -		if len( s:C_Template[lstyle] ) == 0 -			echomsg "style '".lstyle."' : no templates defined" -			return -		endif -		let s:C_ActualStyleLast	= s:C_ActualStyle -		let s:C_ActualStyle	= lstyle -		if len( s:C_ActualStyle ) > 1 && s:C_ActualStyle != s:C_ActualStyleLast -			echomsg "template style is '".lstyle."'" -		endif -	else -		echomsg "style '".lstyle."' does not exist" -	endif -endfunction    " ----------  end of function C_Style  ---------- - -"------------------------------------------------------------------------------ -" C_StyleList     {{{1 -" ex-command CStyle -"------------------------------------------------------------------------------ -function!	C_StyleList ( ArgLead, CmdLine, CursorPos ) -	" show all types / types beginning with a:ArgLead -	return filter( copy(keys( s:C_Template) ), 'v:val =~ "\\<'.a:ArgLead.'\\w*"' ) -endfunction    " ----------  end of function C_StyleList  ---------- - -"------------------------------------------------------------------------------ -" C_OpenFold     {{{1 -" Open fold and go to the first or last line of this fold.  -"------------------------------------------------------------------------------ -function! C_OpenFold ( mode ) -	if foldclosed(".") >= 0 -		" we are on a closed  fold: get end position, open fold, jump to the -		" last line of the previously closed fold -		let	foldstart	= foldclosed(".") -		let	foldend		= foldclosedend(".") -		normal zv -		if a:mode == 'below' -			exe ":".foldend -		endif -		if a:mode == 'start' -			exe ":".foldstart -		endif -	endif -endfunction    " ----------  end of function C_OpenFold  ---------- - -"------------------------------------------------------------------------------ -"  C_InsertTemplate     {{{1 -"  insert a template from the template dictionary -"  do macro expansion -"------------------------------------------------------------------------------ -function! C_InsertTemplate ( key, ... ) - -	if !has_key( s:C_Template[s:C_ActualStyle], a:key ) && -	\  !has_key( s:C_Template['default'], a:key ) -		echomsg "style '".a:key."' / template '".a:key -	\        ."' not found. Please check your template file in '".s:C_GlobalTemplateDir."'" -		return -	endif - -	if &foldenable  -		let	foldmethod_save	= &foldmethod -		set foldmethod=manual -	endif -  "------------------------------------------------------------------------------ -  "  insert the user macros -  "------------------------------------------------------------------------------ - -	" use internal formatting to avoid conficts when using == below -	" -	let	equalprg_save	= &equalprg -	set equalprg= - -  let mode  = s:C_Attribute[a:key] - -	" remove <SPLIT> and insert the complete macro -	" -	if a:0 == 0 -		let val = C_ExpandUserMacros (a:key) -		if val	== "" -			return -		endif -		let val	= C_ExpandSingleMacro( val, '<SPLIT>', '' ) - -		if mode == 'below' -			call C_OpenFold('below') -			let pos1  = line(".")+1 -			put  =val -			let pos2  = line(".") -			" proper indenting -			exe ":".pos1 -			let ins	= pos2-pos1+1 -			exe "normal ".ins."==" -			" -		elseif mode == 'above' -			let pos1  = line(".") -			put! =val -			let pos2  = line(".") -			" proper indenting -			exe ":".pos1 -			let ins	= pos2-pos1+1 -			exe "normal ".ins."==" -			" -		elseif mode == 'start' -			normal gg -			call C_OpenFold('start') -			let pos1  = 1 -			put! =val -			let pos2  = line(".") -			" proper indenting -			exe ":".pos1 -			let ins	= pos2-pos1+1 -			exe "normal ".ins."==" -			" -		elseif mode == 'append' -			if &foldenable && foldclosed(".") >= 0 -				echohl WarningMsg | echomsg s:MsgInsNotAvail  | echohl None -				exe "set foldmethod=".foldmethod_save -				return -			else -				let pos1  = line(".") -				put =val -				let pos2  = line(".")-1 -				exe ":".pos1 -				:join! -			endif -			" -		elseif mode == 'insert' -			if &foldenable && foldclosed(".") >= 0 -				echohl WarningMsg | echomsg s:MsgInsNotAvail  | echohl None -				exe "set foldmethod=".foldmethod_save -				return -			else -				let val   = substitute( val, '\n$', '', '' ) -				let currentline	= getline( "." ) -				let pos1  = line(".") -				let pos2  = pos1 + count( split(val,'\zs'), "\n" ) -				" assign to the unnamed register "" : -				let @"=val -				normal p -				" reformat only multiline inserts and previously empty lines -				if pos2-pos1 > 0 || currentline =~ '' -					exe ":".pos1 -					let ins	= pos2-pos1+1 -					exe "normal ".ins."==" -				endif -			endif -			" -		endif -		" -	else -		" -		" =====  visual mode  =============================== -		" -		if  a:1 == 'v' -			let val = C_ExpandUserMacros (a:key) -			let val	= C_ExpandSingleMacro( val, s:C_TemplateJumpTarget2, '' ) -			if val	== "" -				return -			endif - -			if match( val, '<SPLIT>\s*\n' ) >= 0 -				let part	= split( val, '<SPLIT>\s*\n' ) -			else -				let part	= split( val, '<SPLIT>' ) -			endif - -			if len(part) < 2 -				let part	= [ "" ] + part -				echomsg 'SPLIT missing in template '.a:key -			endif -			" -			" 'visual' and mode 'insert': -			"   <part0><marked area><part1> -			" part0 and part1 can consist of several lines -			" -			if mode == 'insert' -				let pos1  = line(".") -				let pos2  = pos1 -				let	string= @* -				let replacement	= part[0].string.part[1] -				" remove trailing '\n' -				let replacement   = substitute( replacement, '\n$', '', '' ) -				exe ':s/'.string.'/'.replacement.'/' -			endif -			" -			" 'visual' and mode 'below': -			"   <part0> -			"   <marked area> -			"   <part1> -			" part0 and part1 can consist of several lines -			" -			if mode == 'below' - -				:'<put! =part[0] -				:'>put  =part[1] - -				let pos1  = line("'<") - len(split(part[0], '\n' )) -				let pos2  = line("'>") + len(split(part[1], '\n' )) -				""			echo part[0] part[1] pos1 pos2 -				"			" proper indenting -				exe ":".pos1 -				let ins	= pos2-pos1+1 -				exe "normal ".ins."==" -			endif -			" -		endif		" ---------- end visual mode -	endif - -	" restore formatter programm -	let &equalprg	= equalprg_save - -  "------------------------------------------------------------------------------ -  "  position the cursor -  "------------------------------------------------------------------------------ -  exe ":".pos1 -  let mtch = search( '<CURSOR>', 'c', pos2 ) -	if mtch != 0 -		let line	= getline(mtch) -		if line =~ '<CURSOR>$' -			call setline( mtch, substitute( line, '<CURSOR>', '', '' ) ) -			if  a:0 != 0 && a:1 == 'v' && getline(".") =~ '^\s*$' -				normal J -			else -				:startinsert! -			endif -		else -			call setline( mtch, substitute( line, '<CURSOR>', '', '' ) ) -			:startinsert -		endif -	else -		" to the end of the block; needed for repeated inserts -		if mode == 'below' -			exe ":".pos2 -		endif -  endif - -  "------------------------------------------------------------------------------ -  "  marked words -  "------------------------------------------------------------------------------ -	" define a pattern to highlight -	call C_HighlightJumpTargets () - -	if &foldenable  -		" restore folding method -		exe "set foldmethod=".foldmethod_save -		normal zv -	endif - -endfunction    " ----------  end of function C_InsertTemplate  ---------- - -"------------------------------------------------------------------------------ -"  C_HighlightJumpTargets -"------------------------------------------------------------------------------ -function! C_HighlightJumpTargets () -	if s:C_Ctrl_j == 'on' -		exe 'match Search /'.s:C_TemplateJumpTarget1.'\|'.s:C_TemplateJumpTarget2.'/' -	endif -endfunction    " ----------  end of function C_HighlightJumpTargets  ---------- - -"------------------------------------------------------------------------------ -"  C_JumpCtrlJ     {{{1 -"------------------------------------------------------------------------------ -function! C_JumpCtrlJ () -  let match	= search( s:C_TemplateJumpTarget1.'\|'.s:C_TemplateJumpTarget2, 'c' ) -	if match > 0 -		" remove the target -		call setline( match, substitute( getline('.'), s:C_TemplateJumpTarget1.'\|'.s:C_TemplateJumpTarget2, '', '' ) ) -	else -		" try to jump behind parenthesis or strings in the current line  -		if match( getline(".")[col(".") - 1], "[\]})\"'`]"  ) != 0 -			call search( "[\]})\"'`]", '', line(".") ) -		endif -		normal l -	endif -	return '' -endfunction    " ----------  end of function C_JumpCtrlJ  ---------- - -"------------------------------------------------------------------------------ -"  C_ExpandUserMacros     {{{1 -"------------------------------------------------------------------------------ -function! C_ExpandUserMacros ( key ) - -	if has_key( s:C_Template[s:C_ActualStyle], a:key ) -		let template 								= s:C_Template[s:C_ActualStyle][ a:key ] -	else -		let template 								= s:C_Template['default'][ a:key ] -	endif -	let	s:C_ExpansionCounter		= {}										" reset the expansion counter - -  "------------------------------------------------------------------------------ -  "  renew the predefined macros and expand them -	"  can be replaced, with e.g. |?DATE| -  "------------------------------------------------------------------------------ -	let	s:C_Macro['|BASENAME|']	= toupper(expand("%:t:r")) -  let s:C_Macro['|DATE|']  		= C_DateAndTime('d') -  let s:C_Macro['|FILENAME|'] = expand("%:t") -  let s:C_Macro['|PATH|']  		= expand("%:p:h") -  let s:C_Macro['|SUFFIX|'] 	= expand("%:e") -  let s:C_Macro['|TIME|']  		= C_DateAndTime('t') -  let s:C_Macro['|YEAR|']  		= C_DateAndTime('y') - -  "------------------------------------------------------------------------------ -  "  delete jump targets if mapping for C-j is off -  "------------------------------------------------------------------------------ -	if s:C_Ctrl_j == 'off' -		let template	= substitute( template, s:C_TemplateJumpTarget1.'\|'.s:C_TemplateJumpTarget2, '', 'g' ) -	endif - -  "------------------------------------------------------------------------------ -  "  look for replacements -  "------------------------------------------------------------------------------ -	while match( template, s:C_ExpansionRegex ) != -1 -		let macro				= matchstr( template, s:C_ExpansionRegex ) -		let replacement	= substitute( macro, '?', '', '' ) -		let template		= substitute( template, macro, replacement, "g" ) - -		let match	= matchlist( macro, s:C_ExpansionRegex ) - -		if match[1] != '' -			let macroname	= '|'.match[1].'|' -			" -			" notify flag action, if any -			let flagaction	= '' -			if has_key( s:C_MacroFlag, match[2] ) -				let flagaction	= ' (-> '.s:C_MacroFlag[ match[2] ].')' -			endif -			" -			" ask for a replacement -			if has_key( s:C_Macro, macroname ) -				let	name	= C_Input( match[1].flagaction.' : ', C_ApplyFlag( s:C_Macro[macroname], match[2] ) ) -			else -				let	name	= C_Input( match[1].flagaction.' : ', '' ) -			endif -			if name == "" -				return "" -			endif -			" -			" keep the modified name -			let s:C_Macro[macroname]  			= C_ApplyFlag( name, match[2] ) -		endif -	endwhile - -  "------------------------------------------------------------------------------ -  "  do the actual macro expansion -	"  loop over the macros found in the template -  "------------------------------------------------------------------------------ -	while match( template, s:C_NonExpansionRegex ) != -1 - -		let macro			= matchstr( template, s:C_NonExpansionRegex ) -		let match			= matchlist( macro, s:C_NonExpansionRegex ) - -		if match[1] != '' -			let macroname	= '|'.match[1].'|' - -			if has_key( s:C_Macro, macroname ) -				"------------------------------------------------------------------------------- -				"   check for recursion -				"------------------------------------------------------------------------------- -				if has_key( s:C_ExpansionCounter, macroname ) -					let	s:C_ExpansionCounter[macroname]	+= 1 -				else -					let	s:C_ExpansionCounter[macroname]	= 0 -				endif -				if s:C_ExpansionCounter[macroname]	>= s:C_ExpansionLimit -					echomsg " recursion terminated for recursive macro ".macroname -					return template -				endif -				"------------------------------------------------------------------------------- -				"   replace -				"------------------------------------------------------------------------------- -				let replacement = C_ApplyFlag( s:C_Macro[macroname], match[2] ) -				let template 		= substitute( template, macro, replacement, "g" ) -			else -				" -				" macro not yet defined -				let s:C_Macro['|'.match[1].'|']  		= '' -			endif -		endif - -	endwhile - -  return template -endfunction    " ----------  end of function C_ExpandUserMacros  ---------- - -"------------------------------------------------------------------------------ -"  C_ApplyFlag     {{{1 -"------------------------------------------------------------------------------ -function! C_ApplyFlag ( val, flag ) -	" -	" l : lowercase -	if a:flag == ':l' -		return  tolower(a:val) -	endif -	" -	" u : uppercase -	if a:flag == ':u' -		return  toupper(a:val) -	endif -	" -	" c : capitalize -	if a:flag == ':c' -		return  toupper(a:val[0]).a:val[1:] -	endif -	" -	" L : legalized name -	if a:flag == ':L' -		return  C_LegalizeName(a:val) -	endif -	" -	" flag not valid -	return a:val -endfunction    " ----------  end of function C_ApplyFlag  ---------- -" -"------------------------------------------------------------------------------ -"  C_ExpandSingleMacro     {{{1 -"------------------------------------------------------------------------------ -function! C_ExpandSingleMacro ( val, macroname, replacement ) -  return substitute( a:val, escape(a:macroname, '$' ), a:replacement, "g" ) -endfunction    " ----------  end of function C_ExpandSingleMacro  ---------- - -"------------------------------------------------------------------------------ -"  C_SetSmallCommentStyle     {{{1 -"------------------------------------------------------------------------------ -function! C_SetSmallCommentStyle () -	if has_key( s:C_Template, 'comment.end-of-line-comment' ) -		if match( s:C_Template['comment.end-of-line-comment'], '^\s*/\*' ) != -1 -			let s:C_Com1          = '/*'     " C-style : comment start -			let s:C_Com2          = '*/'     " C-style : comment end -		else -			let s:C_Com1          = '//'     " C++style : comment start -			let s:C_Com2          = ''       " C++style : comment end -		endif -	endif -endfunction    " ----------  end of function C_SetSmallCommentStyle  ---------- - -"------------------------------------------------------------------------------ -"  C_InsertMacroValue     {{{1 -"------------------------------------------------------------------------------ -function! C_InsertMacroValue ( key ) -	if s:C_Macro['|'.a:key.'|'] == '' -		echomsg 'the tag |'.a:key.'| is empty' -		return -	endif -	" -	if &foldenable && foldclosed(".") >= 0 -		echohl WarningMsg | echomsg s:MsgInsNotAvail  | echohl None -		return -	endif -	if col(".") > 1 -		exe 'normal a'.s:C_Macro['|'.a:key.'|'] -	else -		exe 'normal i'.s:C_Macro['|'.a:key.'|'] -	endif -endfunction    " ----------  end of function C_InsertMacroValue  ---------- - -"------------------------------------------------------------------------------ -"  insert date and time     {{{1 -"------------------------------------------------------------------------------ -function! C_InsertDateAndTime ( format ) -	if &foldenable && foldclosed(".") >= 0 -		echohl WarningMsg | echomsg s:MsgInsNotAvail  | echohl None -		return "" -	endif -	if col(".") > 1 -		exe 'normal a'.C_DateAndTime(a:format) -	else -		exe 'normal i'.C_DateAndTime(a:format) -	endif -endfunction    " ----------  end of function C_InsertDateAndTime  ---------- - -"------------------------------------------------------------------------------ -"  generate date and time     {{{1 -"------------------------------------------------------------------------------ -function! C_DateAndTime ( format ) -	if a:format == 'd' -		return strftime( s:C_FormatDate ) -	elseif a:format == 't' -		return strftime( s:C_FormatTime ) -	elseif a:format == 'dt' -		return strftime( s:C_FormatDate ).' '.strftime( s:C_FormatTime ) -	elseif a:format == 'y' -		return strftime( s:C_FormatYear ) -	endif -endfunction    " ----------  end of function C_DateAndTime  ---------- - -"------------------------------------------------------------------------------ -"  check for header or implementation file     {{{1 -"------------------------------------------------------------------------------ -function! C_InsertTemplateWrapper () -	if index( s:C_SourceCodeExtensionsList, expand('%:e') ) >= 0  -		call C_InsertTemplate("comment.file-description") -	else -		call C_InsertTemplate("comment.file-description-header") -	endif -endfunction    " ----------  end of function C_InsertTemplateWrapper  ---------- - -" -"------------------------------------------------------------------------------- -"   Comment : C/C++ File Sections             {{{1 -"------------------------------------------------------------------------------- -let s:CFileSection	= {  -	\ "Header\ File\ Includes" : "file-section-cpp-header-includes"               ,  -	\ "Local\ Macros"					 : "file-section-cpp-macros"                        ,  -	\ "Local\ Type\ Def\."		 : "file-section-cpp-typedefs"                      ,  -	\ "Local\ Data\ Types"		 : "file-section-cpp-data-types"                    ,  -	\ "Local\ Variables"			 : "file-section-cpp-local-variables"               ,  -	\ "Local\ Prototypes"			 : "file-section-cpp-prototypes"                    ,  -	\ "Exp\.\ Function\ Def\." : "file-section-cpp-function-defs-exported"        ,  -	\ "Local\ Function\ Def\." : "file-section-cpp-function-defs-local"           ,  -	\ "Local\ Class\ Def\."		 : "file-section-cpp-class-defs"                    ,  -	\ "Exp\.\ Class\ Impl\."	 : "file-section-cpp-class-implementations-exported",  -	\ "Local\ Class\ Impl\."	 : "file-section-cpp-class-implementations-local"   ,  -	\ "All\ sections,\ C"			 : "c", -	\ "All\ sections,\ C++"		 : "cpp", -	\ } - -function!	C_CFileSectionList ( ArgLead, CmdLine, CursorPos ) -	return filter( copy( sort(keys( s:CFileSection)) ), 'v:val =~ "\\<'.a:ArgLead.'\\w*"' ) -endfunction    " ----------  end of function C_CFileSectionList  ---------- - -function! C_CFileSectionListInsert ( arg ) -	if has_key( s:CFileSection, a:arg ) -		if s:CFileSection[a:arg] == 'c' || s:CFileSection[a:arg] == 'cpp' -			call C_Comment_C_SectionAll( 'comment.'.s:CFileSection[a:arg] ) -			return  -		endif -		call C_InsertTemplate( 'comment.'.s:CFileSection[a:arg] ) -	else -		echomsg "entry ".a:arg." does not exist" -	endif -endfunction    " ----------  end of function C_CFileSectionListInsert  ---------- -" -"------------------------------------------------------------------------------- -"   Comment : H File Sections             {{{1 -"------------------------------------------------------------------------------- -let s:HFileSection	= {  -	\	"Header\ File\ Includes"    : "file-section-hpp-header-includes"               , -	\	"Exported\ Macros"          : "file-section-hpp-macros"                        , -	\	"Exported\ Type\ Def\."     : "file-section-hpp-exported-typedefs"             , -	\	"Exported\ Data\ Types"     : "file-section-hpp-exported-data-types"           , -	\	"Exported\ Variables"       : "file-section-hpp-exported-variables"            , -	\	"Exported\ Funct\.\ Decl\." : "file-section-hpp-exported-function-declarations", -	\	"Exported\ Class\ Def\."    : "file-section-hpp-exported-class-defs"           , -	\	"All\ sections,\ C"         : "c"                                              , -	\	"All\ sections,\ C++"       : "cpp"                                            , -	\ } - -function!	C_HFileSectionList ( ArgLead, CmdLine, CursorPos ) -	return filter( copy( sort(keys( s:HFileSection)) ), 'v:val =~ "\\<'.a:ArgLead.'\\w*"' ) -endfunction    " ----------  end of function C_HFileSectionList  ---------- - -function! C_HFileSectionListInsert ( arg ) -	if has_key( s:HFileSection, a:arg ) -		if s:HFileSection[a:arg] == 'c' || s:HFileSection[a:arg] == 'cpp' -			call C_Comment_C_SectionAll( 'comment.'.s:HFileSection[a:arg] ) -			return  -		endif -		call C_InsertTemplate( 'comment.'.s:HFileSection[a:arg] ) -	else -		echomsg "entry ".a:arg." does not exist" -	endif -endfunction    " ----------  end of function C_HFileSectionListInsert  ---------- -" -"------------------------------------------------------------------------------- -"   Comment : Keyword Comments             {{{1 -"------------------------------------------------------------------------------- -let s:KeywordComment	= {  -	\	'BUG'          : 'keyword-bug', -	\	'COMPILER'     : 'keyword-compiler', -	\	'TODO'         : 'keyword-todo', -	\	'TRICKY'       : 'keyword-tricky', -	\	'WARNING'      : 'keyword-warning', -	\	'WORKAROUND'   : 'keyword-workaround', -	\	'new\ keyword' : 'keyword-keyword', -	\ } - -function!	C_KeywordCommentList ( ArgLead, CmdLine, CursorPos ) -	return filter( copy( sort(keys( s:KeywordComment)) ), 'v:val =~ "\\<'.a:ArgLead.'\\w*"' ) -endfunction    " ----------  end of function C_KeywordCommentList  ---------- - -function! C_KeywordCommentListInsert ( arg ) -	if has_key( s:KeywordComment, a:arg ) -		if s:KeywordComment[a:arg] == 'c' || s:KeywordComment[a:arg] == 'cpp' -			call C_Comment_C_SectionAll( 'comment.'.s:KeywordComment[a:arg] ) -			return  -		endif -		call C_InsertTemplate( 'comment.'.s:KeywordComment[a:arg] ) -	else -		echomsg "entry ".a:arg." does not exist" -	endif -endfunction    " ----------  end of function C_KeywordCommentListInsert  ---------- -" -"------------------------------------------------------------------------------- -"   Comment : Special Comments             {{{1 -"------------------------------------------------------------------------------- -let s:SpecialComment	= {  -	\	'EMPTY'                                    : 'special-empty' , -	\	'FALL\ THROUGH'                            : 'special-fall-through' , -	\	'IMPL\.\ TYPE\ CONV'                       : 'special-implicit-type-conversion")' , -	\	'NO\ RETURN'                               : 'special-no-return' , -	\	'NOT\ REACHED'                             : 'special-not-reached' , -	\	'TO\ BE\ IMPL\.'                           : 'special-remains-to-be-implemented' , -	\	'constant\ type\ is\ long\ (L)'            : 'special-constant-type-is-long' , -	\	'constant\ type\ is\ unsigned\ (U)'        : 'special-constant-type-is-unsigned' , -	\	'constant\ type\ is\ unsigned\ long\ (UL)' : 'special-constant-type-is-unsigned-long' , -	\ } - -function!	C_SpecialCommentList ( ArgLead, CmdLine, CursorPos ) -	return filter( copy( sort(keys( s:SpecialComment)) ), 'v:val =~ "\\<'.a:ArgLead.'\\w*"' ) -endfunction    " ----------  end of function C_SpecialCommentList  ---------- - -function! C_SpecialCommentListInsert ( arg ) -	if has_key( s:SpecialComment, a:arg ) -		if s:SpecialComment[a:arg] == 'c' || s:SpecialComment[a:arg] == 'cpp' -			call C_Comment_C_SectionAll( 'comment.'.s:SpecialComment[a:arg] ) -			return  -		endif -		call C_InsertTemplate( 'comment.'.s:SpecialComment[a:arg] ) -	else -		echomsg "entry ".a:arg." does not exist" -	endif -endfunction    " ----------  end of function C_SpecialCommentListInsert  ---------- - -"------------------------------------------------------------------------------- -" Standard Library Includes -"------------------------------------------------------------------------------- -function! C_CleanDirNameList ( list ) -	let	result	= copy( a:list ) -	let	index		= 0 -	while index < len( result ) -		let result[index]	= substitute( result[index], '[&\\]', '', 'g' ) -		let index 				= index + 1 -	endwhile -	return result -endfunction    " ----------  end of function C_CleanDirNameList  ---------- - -let	s:C_StandardLibsClean			= C_CleanDirNameList( s:C_StandardLibs ) -let	s:C_C99LibsClean					= C_CleanDirNameList( s:C_C99Libs ) -let	s:Cpp_StandardLibsClean		= C_CleanDirNameList( s:Cpp_StandardLibs ) -let	s:Cpp_CStandardLibsClean	= C_CleanDirNameList( s:Cpp_CStandardLibs ) - -"------------------------------------------------------------------------------- -" callback functions used in the filetype plugin ftplugin/c.vim -" callback functions -"------------------------------------------------------------------------------- - -function! C_IncludesInsert ( arg, List ) -	if index( a:List, a:arg ) >= 0 -		let	zz	= "#include\t<".a:arg.'>' -		put =zz -	else -		echomsg "entry ".a:arg." does not exist" -	endif -endfunction    " ----------  end of function C_IncludesInsert -" -function! C_StdLibraryIncludesInsert ( arg ) -	call C_IncludesInsert ( a:arg, s:C_StandardLibsClean ) -endfunction    " ----------  end of function C_StdLibraryIncludesInsert - -function! C_C99LibraryIncludesInsert ( arg ) -	call C_IncludesInsert ( a:arg, s:C_C99LibsClean ) -endfunction    " ----------  end of function C_C99LibraryIncludesInsert - -function! C_CppLibraryIncludesInsert ( arg ) -	call C_IncludesInsert ( a:arg, s:Cpp_StandardLibsClean ) -endfunction    " ----------  end of function C_CppLibraryIncludesInsert - -function! C_CppCLibraryIncludesInsert ( arg ) -	call C_IncludesInsert ( a:arg, s:Cpp_CStandardLibsClean ) -endfunction    " ----------  end of function C_CppCLibraryIncludesInsert - -"------------------------------------------------------------------------------- -" callback functions used in the filetype plugin ftplugin/c.vim -" custom completion -"------------------------------------------------------------------------------- - -function!	C_IncludesList ( ArgLead, CmdLine, CursorPos, List ) -	" show all libs -	if a:ArgLead == '' -		return a:List -	endif -	" show libs beginning with a:ArgLead -	let	expansions	= [] -	for item in a:List -		if match( item, '\<'.a:ArgLead.'\w*' ) == 0 -			call add( expansions, item ) -		endif -	endfor -	return	expansions -endfunction    " ----------  end of function C_IncludesList  ---------- -" -function!	C_StdLibraryIncludesList ( ArgLead, CmdLine, CursorPos ) -	return C_IncludesList ( a:ArgLead, a:CmdLine, a:CursorPos, s:C_StandardLibsClean ) -endfunction    " ----------  end of function C_StdLibraryIncludesList  ---------- - -function!	C_C99LibraryIncludesList ( ArgLead, CmdLine, CursorPos ) -	return C_IncludesList ( a:ArgLead, a:CmdLine, a:CursorPos, s:C_C99LibsClean ) -endfunction    " ----------  end of function C_C99LibraryIncludesList  ---------- - -function!	C_CppLibraryIncludesList ( ArgLead, CmdLine, CursorPos ) -	return C_IncludesList ( a:ArgLead, a:CmdLine, a:CursorPos, s:Cpp_StandardLibsClean ) -endfunction    " ----------  end of function C_CppLibraryIncludesList  ---------- - -function!	C_CppCLibraryIncludesList ( ArgLead, CmdLine, CursorPos ) -	return C_IncludesList ( a:ArgLead, a:CmdLine, a:CursorPos, s:Cpp_CStandardLibsClean ) -endfunction    " ----------  end of function C_CppCLibraryIncludesList  ---------- - -"------------------------------------------------------------------------------ -"  show / hide the c-support menus -"  define key mappings (gVim only) -"------------------------------------------------------------------------------ -" -if has("gui_running") -	" -	call C_ToolMenu() -	" -	if s:C_LoadMenus == 'yes' -		call C_CreateGuiMenus() -	endif -	" -	nmap  <unique>  <silent>  <Leader>lcs   :call C_CreateGuiMenus()<CR> -	nmap  <unique>  <silent>  <Leader>ucs   :call C_RemoveGuiMenus()<CR> -	" -endif - -"------------------------------------------------------------------------------ -"  Automated header insertion -"  Local settings for the quickfix window -"------------------------------------------------------------------------------ - -if has("autocmd") -	" -	"  Automated header insertion (suffixes from the gcc manual) -	" -	if !exists( 'g:C_Styles' ) -		"------------------------------------------------------------------------------- -		" template styles are the default settings -		"------------------------------------------------------------------------------- -		autocmd BufNewFile  * if (&filetype=='cpp' || &filetype=='c') | -					\     call C_InsertTemplateWrapper() | endif -		" -		"  *.h has filetype 'cpp' by default; this can be changed to 'c' : -		" -		if s:C_TypeOfH=='c' -			autocmd BufNewFile,BufEnter  *.h  :set filetype=c -		endif -		" -		" C/C++ source code files which should not be preprocessed. -		" -		autocmd BufNewFile,BufRead  *.i  :set filetype=c -		autocmd BufNewFile,BufRead  *.ii :set filetype=cpp -		" -	else -		"------------------------------------------------------------------------------- -		" template styles are related to file extensions  -		"------------------------------------------------------------------------------- -		for [ pattern, stl ] in items( g:C_Styles ) -			exe "autocmd BufNewFile,BufRead,BufEnter ".pattern." call C_Style( '".stl."' )" -			exe "autocmd BufNewFile                  ".pattern." call C_InsertTemplateWrapper() 	|	:w!" -		endfor -		" -	endif -	" -	" Wrap error descriptions in the quickfix window. -	" -	autocmd BufReadPost quickfix  setlocal wrap | setlocal linebreak -	" -	exe 'autocmd BufRead *.'.join( s:C_SourceCodeExtensionsList, '\|*.' ) -				\     .' call C_HighlightJumpTargets()' -	" -endif " has("autocmd") -" -"------------------------------------------------------------------------------ -"  READ THE TEMPLATE FILES -"------------------------------------------------------------------------------ -call C_ReadTemplates(s:C_GlobalTemplateFile) -if s:installation == 'system' && filereadable( s:C_LocalTemplateFile ) -	call C_ReadTemplates( s:C_LocalTemplateFile ) -endif -" -"===================================================================================== -" vim: tabstop=2 shiftwidth=2 foldmethod=marker @@ -1,6 +1,7 @@  " bnewbold's .vimrc -" circa 04/2006 +" circa 2006-2010 +" enable plugins  :filetype plugin on  if has('syntax') && (&t_Co > 2) @@ -16,48 +17,59 @@ set tabstop=4  set shiftround  set expandtab  set autoindent -set hidden +set hidden          " allows modified buffers to be hidden  " vtreeexplore  let treeExplVertical=1  let treeExplWinSize=30  let treeExplDirSort=1 -let treeExplNoList=1 -:nmap <F2> :VSTreeExplore<cr> -let g:buftabs_in_statusline=1 -let g:buftabs_only_basename=1 +let treeExplNoList=0 +"nmap <F2> :VTreeExplore<cr> +nmap <F2> :Explore<cr> +"let g:buftabs_in_statusline=1 +"let g:buftabs_only_basename=1 +"let g:buftabs_active_highlight_group="Visual" -" better vertical split style +" a more readbly vertical split  hi VertSplit cterm=none ctermfg=LightGray term=none gui=none -" firefox style ctrl-tabbing with buffers +" firefox style ctrl-tabbing with buffers; doesn't work in xterm  noremap <C-tab> :bprev<CR>   noremap <C-S-tab> :bnext<CR>   " needed for in xterm with remaping... ugh. -:nmap <Esc>[27;6;9~ :bprev<CR> -:nmap <Esc>[27;5;9~ :bnext<CR> -:map <Esc>[27;6;9~ :bprev<CR> -:map <Esc>[27;5;9~ :bnext<CR> -" and for tabbing -:nmap <C-left> :tabN<CR> -:nmap <C-right> :tabn<CR> -:map <C-left> :tabN<CR> -:map <C-right> :tabn<CR> - -" cscope quicklisting -set cscopequickfix=s-,c-,d-,i-,t-,e- +nmap <Esc>[27;6;9~ :bprev<CR>  +nmap <Esc>[27;5;9~ :bnext<CR> +map <Esc>[27;6;9~ :bprev<CR> +map <Esc>[27;5;9~ :bnext<CR> + +" and for tabbing around +nmap <C-left> :tabN<CR> +nmap <C-right> :tabn<CR> +map <C-left> :tabN<CR> +map <C-right> :tabn<CR> + +" and between windows +noremap <A-h> <C-w>h<CR> +noremap <A-j> <C-w>j<CR> +noremap <A-k> <C-w>k<CR> +noremap <A-l> <C-w>l<CR>  " Searching stuff  set incsearch  set ignorecase  set smartcase +" this allows the arrow keys to do screen lines instead of file lines +" (srapped) +noremap <Up> gk +noremap <Down> gj +  autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class  " for Project Fortress  au BufNewFile,BufRead *.fsi,*.fss set ft=fortress  " for previewing reStructured text (.rst) in firefox -:command Rst :!rst2html.py "%" > /tmp/rstprev.html && firefox file:///tmp/rstprev.html +:command! Rst :!rst2html.py "%" > /tmp/rstprev.html && firefox file:///tmp/rstprev.html  :nnoremap <C-p><C-r> :Rst<CR>  | 
