diff --git a/runtime/doc/sql.txt b/runtime/doc/sql.txt
index e7d40d6..f089012 100644
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*   	For Vim version 7.0f.  Last change: Wed Apr 26 2006 3:05:33 PM
+*sql.txt*	For Vim version 7.0g.  Last change: Wed Apr 26 2006 3:05:33 PM
 
 by David Fishburn
 
@@ -8,40 +8,40 @@
 that allow a user to interact with a relational database.  Vim includes
 features for navigation, indentation and syntax highlighting.
 
-1. Navigation                                   |sql-navigation|
-    1.1 Matchit		        		|sql-matchit|
-    1.2 Text Object Motions		        |sql-object-motions|
-    1.3 Predefined Object Motions               |sql-predefined-objects|
-    1.4 Macros                                  |sql-macros|
-2. SQL Dialects		                        |sql-dialects|
-    2.1 SQLSetType		        	|SQLSetType|
-    2.2 SQL Dialect Default		        |sql-type-default|
-3. Adding new SQL Dialects		        |sql-adding-dialects|
-4. OMNI SQL Completion  		        |sql-completion|
-    4.1 Static mode		        	|sql-completion-static|
-    4.2 Dynamic mode    		        |sql-completion-dynamic|
+1. Navigation					|sql-navigation|
+    1.1 Matchit					|sql-matchit|
+    1.2 Text Object Motions			|sql-object-motions|
+    1.3 Predefined Object Motions		|sql-predefined-objects|
+    1.4 Macros					|sql-macros|
+2. SQL Dialects					|sql-dialects|
+    2.1 SQLSetType				|SQLSetType|
+    2.2 SQL Dialect Default			|sql-type-default|
+3. Adding new SQL Dialects			|sql-adding-dialects|
+4. OMNI SQL Completion				|sql-completion|
+    4.1 Static mode				|sql-completion-static|
+    4.2 Dynamic mode				|sql-completion-dynamic|
     4.3 Tutorial				|sql-completion-tutorial|
-        4.3.1 Complete Tables			|sql-completion-tables|
-        4.3.2 Complete Columns			|sql-completion-columns|
-        4.3.3 Complete Procedures		|sql-completion-procedures|
-        4.3.4 Complete Views			|sql-completion-views|
+	4.3.1 Complete Tables			|sql-completion-tables|
+	4.3.2 Complete Columns			|sql-completion-columns|
+	4.3.3 Complete Procedures		|sql-completion-procedures|
+	4.3.4 Complete Views			|sql-completion-views|
     4.4 Completion Customization		|sql-completion-customization|
-    4.5 SQL Maps	        		|sql-completion-maps|
+    4.5 SQL Maps				|sql-completion-maps|
     4.6 Using with other filetypes		|sql-completion-filetypes|
 
 ==============================================================================
-1. Navigation	        			*sql-navigation*
+1. Navigation					*sql-navigation*
 
 The SQL ftplugin provides a number of options to assist with file
 navigation.
 
 
-1.1 Matchit		        		*sql-matchit*
+1.1 Matchit					*sql-matchit*
 -----------
 The matchit plugin (http://www.vim.org/scripts/script.php?script_id=39)
 provides many additional features and can be customized for different
-languages.  The matchit plugin is configured by defining a local 
-buffer variable, b:match_words.  Pressing the % key while on various 
+languages.  The matchit plugin is configured by defining a local
+buffer variable, b:match_words.  Pressing the % key while on various
 keywords will move the cursor to its match.  For example, if the cursor
 is on an "if", pressing % will cycle between the "else", "elseif" and
 "end if" keywords.
@@ -51,40 +51,40 @@
     elseif | elsif
     else [if]
     end if
-    
+
     [while condition] loop
-        leave
-        break
-        continue
-        exit
+	leave
+	break
+	continue
+	exit
     end loop
-    
+
     for
-        leave
-        break
-        continue
-        exit
+	leave
+	break
+	continue
+	exit
     end loop
-    
+
     do
-        statements
+	statements
     doend
-    
+
     case
-    when 
+    when
     when
     default
     end case
-    
+
     merge
     when not matched
     when matched
 
     create[ or replace] procedure|function|event
     returns
- 
 
-1.2 Text Object Motions		        	*sql-object-motions*
+
+1.2 Text Object Motions				*sql-object-motions*
 -----------------------
 Vim has a number of predefined keys for working with text |object-motions|.
 This filetype plugin attempts to translate these keys to maps which make sense
@@ -92,13 +92,13 @@
 
 The following |Normal| mode and |Visual| mode maps exist (when you edit a SQL
 file): >
-    ]]              move forward to the next 'begin'
-    [[              move backwards to the previous 'begin'
-    ][              move forward to the next 'end'
-    []              move backwards to the previous 'end'
- 
+    ]]		    move forward to the next 'begin'
+    [[		    move backwards to the previous 'begin'
+    ][		    move forward to the next 'end'
+    []		    move backwards to the previous 'end'
 
-1.3 Predefined Object Motions                   *sql-predefined-objects*
+
+1.3 Predefined Object Motions			*sql-predefined-objects*
 -----------------------------
 Most relational databases support various standard features, tables, indices,
 triggers and stored procedures.  Each vendor also has a variety of proprietary
@@ -109,44 +109,44 @@
 flexible as possible, you can override the list of objects from within your
 |vimrc| with the following: >
     let g:ftplugin_sql_objects = 'function,procedure,event,table,trigger' .
-                \ ',schema,service,publication,database,datatype,domain' .
-                \ ',index,subscription,synchronization,view,variable'
-                 
+		\ ',schema,service,publication,database,datatype,domain' .
+		\ ',index,subscription,synchronization,view,variable'
+
 The following |Normal| mode and |Visual| mode maps have been created which use
 the above list: >
-    ]}              move forward to the next 'create <object name>'
-    [{              move backward to the previous 'create <object name>'
+    ]}		    move forward to the next 'create <object name>'
+    [{		    move backward to the previous 'create <object name>'
 
 Repeatedly pressing ]} will cycle through each of these create statements: >
     create table t1 (
-        ...
+	...
     );
 
     create procedure p1
     begin
-        ...
+	...
     end;
 
     create index i1 on t1 (c1);
- 
+
 The default setting for g:ftplugin_sql_objects is: >
     let g:ftplugin_sql_objects = 'function,procedure,event,' .
-                \ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
-                \ 'table,trigger' .
-                \ ',schema,service,publication,database,datatype,domain' .
-                \ ',index,subscription,synchronization,view,variable'
- 
+		\ '\\(existing\\\\|global\\s\\+temporary\\s\\+\\)\\\{,1}' .
+		\ 'table,trigger' .
+		\ ',schema,service,publication,database,datatype,domain' .
+		\ ',index,subscription,synchronization,view,variable'
+
 The above will also handle these cases: >
     create table t1 (
-        ...
+	...
     );
     create existing table t2 (
-        ...
+	...
     );
     create global temporary table t3 (
-        ...
+	...
     );
- 
+
 By default, the ftplugin only searches for CREATE statements.  You can also
 override this via your |vimrc| with the following: >
     let g:ftplugin_sql_statements = 'create,alter'
@@ -155,43 +155,43 @@
     1.  --
     2.  //
     3.  /*
-         *
-         */
-          
+	 *
+	 */
+
 The following |Normal| mode and |Visual| mode maps have been created to work
 with comments: >
-    ]"              move forward to the beginning of a comment
-    ["              move forward to the end of a comment
+    ]"		    move forward to the beginning of a comment
+    ["		    move forward to the end of a comment
 
 
 
-1.4 Macros                                         *sql-macros*
+1.4 Macros					   *sql-macros*
 ----------
 Vim's feature to find macro definitions, |'define'|, is supported using this
 regular expression: >
     \c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>
- 
+
 This addresses the following code: >
     CREATE VARIABLE myVar1 INTEGER;
 
     CREATE PROCEDURE sp_test(
-        IN myVar2 INTEGER,
-        OUT myVar3 CHAR(30),
-        INOUT myVar4 NUMERIC(20,0)
+	IN myVar2 INTEGER,
+	OUT myVar3 CHAR(30),
+	INOUT myVar4 NUMERIC(20,0)
     )
     BEGIN
-        DECLARE myVar5 INTEGER;
+	DECLARE myVar5 INTEGER;
 
-        SELECT c1, c2, c3
-          INTO myVar2, myVar3, myVar4
-          FROM T1
-         WHERE c4 = myVar1;
+	SELECT c1, c2, c3
+	  INTO myVar2, myVar3, myVar4
+	  FROM T1
+	 WHERE c4 = myVar1;
     END;
- 
+
 Place your cursor on "myVar1" on this line: >
-         WHERE c4 = myVar1;
-                     ^
- 
+	 WHERE c4 = myVar1;
+		     ^
+
 Press any of the following keys: >
     [d
     [D
@@ -199,17 +199,17 @@
 
 
 ==============================================================================
-2. SQL Dialects	        			*sql-dialects* *sql-types*
-                                                *sybase* *TSQL* *Transact-SQL*
-                                                *sqlanywhere* 
-                                                *oracle* *plsql* *sqlj*
-                                                *sqlserver*
-                                                *mysql* *postgress* *psql*
-                                                *informix*
+2. SQL Dialects					*sql-dialects* *sql-types*
+						*sybase* *TSQL* *Transact-SQL*
+						*sqlanywhere*
+						*oracle* *plsql* *sqlj*
+						*sqlserver*
+						*mysql* *postgress* *psql*
+						*informix*
 
 All relational databases support SQL.  There is a portion of SQL that is
 portable across vendors (ex. CREATE TABLE, CREATE INDEX), but there is a
-great deal of vendor specific extensions to SQL.  Oracle supports the 
+great deal of vendor specific extensions to SQL.  Oracle supports the
 "CREATE OR REPLACE" syntax, column defaults specified in the CREATE TABLE
 statement and the procedural language (for stored procedures and triggers).
 
@@ -229,13 +229,13 @@
 be nice to specify a default in your |vimrc|.
 
 
-2.1 SQLSetType		        		*sqlsettype* *SQLSetType*
+2.1 SQLSetType					*sqlsettype* *SQLSetType*
 --------------
 For the people that work with many different databases, it would be nice to be
 able to flip between the various vendors rules (indent, syntax) on a per
 buffer basis, at any time.  The ftplugin/sql.vim file defines this function: >
     SQLSetType
- 
+
 Executing this function without any parameters will set the indent and syntax
 scripts back to their defaults, see |sql-type-default|.  If you have turned
 off Vi's compatibility mode, |'compatible'|, you can use the <Tab> key to
@@ -247,19 +247,19 @@
 search the |'runtimepath'| for all Vim scripts with a name containing 'sql'.
 This takes the guess work out of the spelling of the names.  The following are
 examples: >
-    :SQLSetType 
+    :SQLSetType
     :SQLSetType sqloracle
     :SQLSetType sqlanywhere
     :SQLSetType sqlinformix
     :SQLSetType mysql
- 
+
 The easiest approach is to the use <Tab> character which will first complete
 the command name (SQLSetType), after a space and another <Tab>, display a list
 of available Vim script names: >
     :SQL<Tab><space><Tab>
- 
 
-2.2 SQL Dialect Default		        	*sql-type-default*
+
+2.2 SQL Dialect Default				*sql-type-default*
 -----------------------
 As mentioned earlier, the default syntax rules for Vim is based on Oracle
 (PL/SQL).  You can override this default by placing one of the following in
@@ -267,11 +267,11 @@
     let g:sql_type_default = 'sqlanywhere'
     let g:sql_type_default = 'sqlinformix'
     let g:sql_type_default = 'mysql'
- 
+
 If you added the following to your |vimrc|: >
     let g:sql_type_default = 'sqlinformix'
- 
-The next time edit a SQL file the following scripts will be automatically 
+
+The next time edit a SQL file the following scripts will be automatically
 loaded by Vim: >
     ftplugin/sql.vim
     syntax/sqlinformix.vim
@@ -283,7 +283,7 @@
 
 
 ==============================================================================
-3. Adding new SQL Dialects		        *sql-adding-dialects*
+3. Adding new SQL Dialects			*sql-adding-dialects*
 
 If you begin working with a SQL dialect which does not have any customizations
 available with the default Vim distribution you can check http://www.vim.org
@@ -294,22 +294,22 @@
 If you decide you wish to create customizations for the SQLite database, you
 can create any of the following: >
     Unix
-        ~/.vim/syntax/sqlite.vim
-        ~/.vim/indent/sqlite.vim
+	~/.vim/syntax/sqlite.vim
+	~/.vim/indent/sqlite.vim
     Windows
-        $VIM/vimfiles/syntax/sqlite.vim
-        $VIM/vimfiles/indent/sqlite.vim
- 
+	$VIM/vimfiles/syntax/sqlite.vim
+	$VIM/vimfiles/indent/sqlite.vim
+
 No changes are necessary to the SQLSetType function.  It will automatically
-pickup the new SQL files and load them when you issue the SQLSetType command. 
+pickup the new SQL files and load them when you issue the SQLSetType command.
 
 
 ==============================================================================
-4. OMNI SQL Completion  		        *sql-completion* 
-                                                *omni-sql-completion*
+4. OMNI SQL Completion				*sql-completion*
+						*omni-sql-completion*
 
 Vim 7 includes a code completion interface and functions which allows plugin
-developers to build in code completion for any language.  Vim 7 includes 
+developers to build in code completion for any language.  Vim 7 includes
 code completion for the SQL language.
 
 There are two modes to the SQL completion plugin, static and dynamic.  The
@@ -318,7 +318,7 @@
 directly from a database.  This includes, table lists, column lists,
 procedures names and more.
 
-4.1 Static Mode  		                *sql-completion-static*
+4.1 Static Mode					*sql-completion-static*
 ---------------
 The static popups created contain items defined by the active syntax rules
 while editing a file with a filetype of SQL.  The plugin defines (by default)
@@ -330,39 +330,39 @@
     imap <buffer> <C-C>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
     imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
     imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
-  
+
 The static maps (which are based on the syntax highlight groups) follow this
 format: >
     imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
- 
+
 This command breaks down as: >
-    imap                   - Create an insert map
-    <buffer>               - Only for this buffer
-    <C-C>k                 - Your choice of key map
-    <C-\><C-O>             - Execute one command, return to Insert mode
+    imap		   - Create an insert map
+    <buffer>		   - Only for this buffer
+    <C-C>k		   - Your choice of key map
+    <C-\><C-O>		   - Execute one command, return to Insert mode
     :call sqlcomplete#Map( - Allows the SQL completion plugin to perform some
-                             housekeeping functions to allow it to be used in
-                             conjunction with other completion plugins.
-                             Indicate which item you want the SQL completion
-                             plugin to complete.
-                             In this case we are asking the plugin to display
-                             items from the syntax highlight group
-                             'sqlKeyword'.
-                             You can view a list of highlight group names to
-                             choose from by executing the
-                                 :syntax list
-                             command while editing a SQL file.
-    'sqlKeyword'           - Display the items for the sqlKeyword highlight
-                             group
-    )<CR>                  - Execute the :let command
-    <C-X><C-O>             - Trigger the standard omni completion key stroke.
-                             Passing in 'sqlKeyword' instructs the SQL
-                             completion plugin to populate the popup with
-                             items from the sqlKeyword highlight group.  The
-                             plugin will also cache this result until Vim is
-                             restarted.  The syntax list is retrieved using
-                             the syntaxcomplete plugin.
- 
+			     housekeeping functions to allow it to be used in
+			     conjunction with other completion plugins.
+			     Indicate which item you want the SQL completion
+			     plugin to complete.
+			     In this case we are asking the plugin to display
+			     items from the syntax highlight group
+			     'sqlKeyword'.
+			     You can view a list of highlight group names to
+			     choose from by executing the
+				 :syntax list
+			     command while editing a SQL file.
+    'sqlKeyword'	   - Display the items for the sqlKeyword highlight
+			     group
+    )<CR>		   - Execute the :let command
+    <C-X><C-O>		   - Trigger the standard omni completion key stroke.
+			     Passing in 'sqlKeyword' instructs the SQL
+			     completion plugin to populate the popup with
+			     items from the sqlKeyword highlight group.  The
+			     plugin will also cache this result until Vim is
+			     restarted.  The syntax list is retrieved using
+			     the syntaxcomplete plugin.
+
 Using the 'syntax' keyword is a special case.  This instructs the
 syntaxcomplete plugin to retrieve all syntax items.  So this will effectively
 work for any of Vim's SQL syntax files.  At the time of writing this includes
@@ -371,77 +371,77 @@
 
 Here are some examples of the entries which are pulled from the syntax files: >
      All
-         - Contains the contents of all syntax highlight groups
+	 - Contains the contents of all syntax highlight groups
      Statements
-         - Select, Insert, Update, Delete, Create, Alter, ...
+	 - Select, Insert, Update, Delete, Create, Alter, ...
      Functions
-         - Min, Max, Trim, Round, Date, ...
+	 - Min, Max, Trim, Round, Date, ...
      Keywords
-         - Index, Database, Having, Group, With
+	 - Index, Database, Having, Group, With
      Options
-         - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
+	 - Isolation_level, On_error, Qualify_owners, Fire_triggers, ...
      Types
-         - Integer, Char, Varchar, Date, DateTime, Timestamp, ...
- 
- 
-4.2 Dynamic Mode  		                *sql-completion-dynamic*
+	 - Integer, Char, Varchar, Date, DateTime, Timestamp, ...
+
+
+4.2 Dynamic Mode				*sql-completion-dynamic*
 ----------------
 Dynamic mode populates the popups with data directly from a database.  In
 order for the dynamic feature to be enabled you must have the dbext.vim
 plugin installed, (http://vim.sourceforge.net/script.php?script_id=356).
 
-Dynamic mode is used by several features of the SQL completion plugin.  
+Dynamic mode is used by several features of the SQL completion plugin.
 After installing the dbext plugin see the dbext-tutorial for additional
 configuration and usage.  The dbext plugin allows the SQL completion plugin
 to display a list of tables, procedures, views and columns. >
      Table List
-         - All tables for all schema owners
+	 - All tables for all schema owners
      Procedure List
-         - All stored procedures for all schema owners
+	 - All stored procedures for all schema owners
      View List
-         - All stored procedures for all schema owners
+	 - All stored procedures for all schema owners
      Column List
-         - For the selected table, the columns that are part of the table
- 
+	 - For the selected table, the columns that are part of the table
+
 To enable the popup, while in INSERT mode, use the following key combinations
-for each group (where <C-C> means hold the CTRL key down while pressing 
+for each group (where <C-C> means hold the CTRL key down while pressing
 the space bar):
-     Table List             - <C-C>t
-                            - <C-X><C-O> (the default map assumes tables)
+     Table List		    - <C-C>t
+			    - <C-X><C-O> (the default map assumes tables)
      Stored Procedure List  - <C-C>p
-     View List              - <C-C>v
-     Column List            - <C-C>c
+     View List		    - <C-C>v
+     Column List	    - <C-C>c
 
      Windows platform only  - When viewing a popup window displaying the list
-                              of tables, you can press <C-Right>, this will
-                              replace the table currently highlighted with
-                              the column list for that table.
-                            - When viewing a popup window displaying the list
-                              of columns, you can press <C-Left>, this will
-                              replace the column list with the list of tables.
-                            - This allows you to quickly drill down into a
-                              table to view it's columns and back again.
- 
+			      of tables, you can press <C-Right>, this will
+			      replace the table currently highlighted with
+			      the column list for that table.
+			    - When viewing a popup window displaying the list
+			      of columns, you can press <C-Left>, this will
+			      replace the column list with the list of tables.
+			    - This allows you to quickly drill down into a
+			      table to view it's columns and back again.
+
 The SQL completion plugin caches various lists that are displayed in
 the popup window.  This makes the re-displaying of these lists very
-fast.  If new tables or columns are added to the database it may become 
+fast.  If new tables or columns are added to the database it may become
 necessary to clear the plugins cache.  The default map for this is: >
     imap <buffer> <C-C>R <C-\><C-O>:call sqlcomplete#Map('ResetCache')<CR><C-X><C-O>
- 
- 
+
+
 4.3 SQL Tutorial				*sql-completion-tutorial*
 ----------------
- 
+
 This tutorial is designed to take you through the common features of the SQL
 completion plugin so that: >
      a) You gain familiarity with the plugin
      b) You are introduced to some of the more common features
      c) Show how to customize it to your preferences
      d) Demonstrate "Best of Use" of the plugin (easiest way to configure).
- 
+
 First, create a new buffer: >
      :e tutorial.sql
- 
+
 
 Static features
 ---------------
@@ -450,8 +450,8 @@
 At this point, you can page down through the list until you find "select".
 If you are familiar with the item you are looking for, for example you know
 the statement begins with the letter "s".  You can type ahead (without the
-quotes) "se" then press: 
-    <C-Spact>t 
+quotes) "se" then press:
+    <C-Space>t
 Assuming "select" is highlighted in the popup list press <Enter> to choose
 the entry.  Now type:
     * fr<C-C>a (show all syntax items)
@@ -462,12 +462,12 @@
 depending on the syntax file you are using.  The SQL Anywhere syntax file
 (sqlanywhere.vim) has support for this: >
      BEGIN
-        DECLARE customer_id <C-C>T <-- Choose a type from the list
-  
+	DECLARE customer_id <C-C>T <-- Choose a type from the list
+
 
 Dynamic features
 ----------------
-To take advantage of the dynamic features you must first install the 
+To take advantage of the dynamic features you must first install the
 dbext.vim plugin (http://vim.sourceforge.net/script.php?script_id=356).  It
 also comes with a tutorial.  From the SQL completion plugin's perspective,
 the main feature dbext provides is a connection to a database.  dbext
@@ -477,24 +477,24 @@
 
 What follows assumes dbext.vim has been correctly configured, a simple test
 is to run the command, :DBListTable.  If a list of tables is shown, you know
-dbext.vim is working as expected.  If not, please consult the dbext.txt 
+dbext.vim is working as expected.  If not, please consult the dbext.txt
 documentation.
 
 Assuming you have followed the dbext-tutorial you can press <C-C>t to
 display a list of tables.  There is a delay while dbext is creating the table
-list.  After the list is displayed press <C-W>.  This will remove both the 
+list.  After the list is displayed press <C-W>.  This will remove both the
 popup window and the table name already chosen when the list became active. >
- 
+
  4.3.1 Table Completion:			*sql-completion-tables*
- 
+
 Press <C-C>t to display a list of tables from within the database you
-have connected via the dbext plugin.  
+have connected via the dbext plugin.
 NOTE: All of the SQL completion popups support typing a prefix before pressing
 the key map.  This will limit the contents of the popup window to just items
 beginning with those characters.  >
- 
+
  4.3.2 Column Completion:			*sql-completion-columns*
- 
+
 The SQL completion plugin can also display a list of columns for particular
 tables.  The column completion is trigger via <C-C>c.
 
@@ -506,64 +506,64 @@
 details on where to create this imap): >
     imap <buffer> <your_keystroke> <C-R>=sqlcomplete#DrillIntoTable()<CR>
     imap <buffer> <your_keystroke> <C-Y><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
- 
+
 Example of using column completion:
-     - Press <C-C>t again to display the list of tables.  
+     - Press <C-C>t again to display the list of tables.
      - When the list is displayed in the completion window, press <C-Right>,
        this will replace the list of tables, with a list of columns for the
-       table highlighted (after the same short delay).  
+       table highlighted (after the same short delay).
      - If you press <C-Left>, this will again replace the column list with the
        list of tables.  This allows you to drill into tables and column lists
-       very quickly.  
+       very quickly.
      - Press <C-Right> again while the same table is highlighted.  You will
        notice there is no delay since the column list has been cached.  If you
        change the schema of a cached table you can press <C-C>R, which
-       clears the SQL completion cache.  
+       clears the SQL completion cache.
      - NOTE: <C-Right> and <C-Left> have been designed to work while the
-       completion window is active.  If the completion popup window is 
+       completion window is active.  If the completion popup window is
        not active, a normal <C-Right> or <C-Left> will be executed.
- 
+
 Lets look how we can build a SQL statement dynamically.  A select statement
 requires a list of columns.  There are two ways to build a column list using
 the SQL completion plugin. >
     One column at a time:
 <       1. After typing SELECT press <C-C>t to display a list of tables.
-        2. Choose a table from the list.
-        3. Press <C-Right> to display a list of columns.
-        4. Choose the column from the list and press enter.
-        5. Enter a "," and press <C-C>c.  Generating a column list
-           generally requires having the cursor on a table name.  The plugin
-           uses this name to determine what table to retrieve the column list.  
-           In this step, since we are pressing <C-C>c without the cursor 
-           on a table name the column list displayed will be for the previous 
-           table.  Choose a different column and move on. 
-        6. Repeat step 5 as often as necessary. >
-    All columns for a table: 
-<       1. After typing SELECT press <C-C>t to display a list of tables.
-        2. Highlight the table you need the column list for.
-        3. Press <Enter> to choose the table from the list.
-        4. Press <C-C>l to request a comma separated list of all columns
-           for this table.
-        5. Based on the table name chosen in step 3, the plugin attempts to
-           decide on a reasonable table alias.  You are then prompted to
-           either accept of change the alias.  Press OK.
-        6. The table name is replaced with the column list of the table is
-           replaced with the comma separate list of columns with the alias
-           prepended to each of the columns.
-        7. Step 3 and 4 can be replaced by pressing <C-C>L, which has
-           a <C-Y> embedded in the map to choose the currently highlighted 
-           table in the list.
+	2. Choose a table from the list.
+	3. Press <C-Right> to display a list of columns.
+	4. Choose the column from the list and press enter.
+	5. Enter a "," and press <C-C>c.  Generating a column list
+	   generally requires having the cursor on a table name.  The plugin
+	   uses this name to determine what table to retrieve the column list.
+	   In this step, since we are pressing <C-C>c without the cursor
+	   on a table name the column list displayed will be for the previous
+	   table.  Choose a different column and move on.
+	6. Repeat step 5 as often as necessary. >
+    All columns for a table:
+<	1. After typing SELECT press <C-C>t to display a list of tables.
+	2. Highlight the table you need the column list for.
+	3. Press <Enter> to choose the table from the list.
+	4. Press <C-C>l to request a comma separated list of all columns
+	   for this table.
+	5. Based on the table name chosen in step 3, the plugin attempts to
+	   decide on a reasonable table alias.	You are then prompted to
+	   either accept of change the alias.  Press OK.
+	6. The table name is replaced with the column list of the table is
+	   replaced with the comma separate list of columns with the alias
+	   prepended to each of the columns.
+	7. Step 3 and 4 can be replaced by pressing <C-C>L, which has
+	   a <C-Y> embedded in the map to choose the currently highlighted
+	   table in the list.
 
 There is a special provision when writing select statements.  Consider the
 following statement: >
-     select * 
+     select *
        from customer c,
-            contact cn,
-            department as dp,
-            employee e,
-            site_options so
+	    contact cn,
+	    department as dp,
+	    employee e,
+	    site_options so
       where c.
- 
+
 In INSERT mode after typing the final "c." which is an alias for the
 "customer" table, you can press either <C-C>c or <C-X><C-O>.  This will
 popup a list of columns for the customer table.  It does this by looking back
@@ -571,19 +571,19 @@
 specified in the FROM clause.  In this case it notes that in the string
 "customer c", "c" is an alias for the customer table.  The optional "AS"
 keyword is also supported, "customer AS c". >
- 
- 
+
+
  4.3.3 Procedure Completion:			*sql-completion-procedures*
- 
+
 Similar to the table list, <C-C>p, will display a list of stored
 procedures stored within the database. >
- 
+
  4.3.4 View Completion:				*sql-completion-views*
- 
+
 Similar to the table list, <C-C>v, will display a list of views in the
 database.
 
- 
+
 4.4 Completion Customization			*sql-completion-customization*
 ----------------------------
 
@@ -591,60 +591,60 @@
 your |vimrc|: >
     omni_sql_no_default_maps
 <       - Default: This variable is not defined
-        - If this variable is defined, no maps are created for OMNI
-          completion.  See |sql-completion-maps| for further discussion.
+	- If this variable is defined, no maps are created for OMNI
+	  completion.  See |sql-completion-maps| for further discussion.
 >
     omni_sql_use_tbl_alias
-<       - Default: a
-        - This setting is only used when generating a comma separated
-          column list.  By default the map is <C-C>l.  When generating
-          a column list, an alias can be prepended to the beginning of each
-          column, for example:  e.emp_id, e.emp_name.  This option has three 
-          settings: >
-                n - do not use an alias
-                d - use the default (calculated) alias
-                a - ask to confirm the alias name
+<	- Default: a
+	- This setting is only used when generating a comma separated
+	  column list.	By default the map is <C-C>l.  When generating
+	  a column list, an alias can be prepended to the beginning of each
+	  column, for example:	e.emp_id, e.emp_name.  This option has three
+	  settings: >
+		n - do not use an alias
+		d - use the default (calculated) alias
+		a - ask to confirm the alias name
 <
-          An alias is determined following a few rules:
-               1.  If the table name has an '_', then use it as a separator: >
-                   MY_TABLE_NAME --> MTN
-                   my_table_name --> mtn
-                   My_table_NAME --> MtN
-<              2.  If the table name does NOT contain an '_', but DOES use
-                   mixed case then the case is used as a separator: >
-                   MyTableName --> MTN
-<              3.  If the table name does NOT contain an '_', and does NOT 
-                   use mixed case then the first letter of the table is used: >
-                   mytablename --> m
-                   MYTABLENAME --> M
- 
+	  An alias is determined following a few rules:
+	       1.  If the table name has an '_', then use it as a separator: >
+		   MY_TABLE_NAME --> MTN
+		   my_table_name --> mtn
+		   My_table_NAME --> MtN
+<	       2.  If the table name does NOT contain an '_', but DOES use
+		   mixed case then the case is used as a separator: >
+		   MyTableName --> MTN
+<	       3.  If the table name does NOT contain an '_', and does NOT
+		   use mixed case then the first letter of the table is used: >
+		   mytablename --> m
+		   MYTABLENAME --> M
+
     omni_sql_ignorecase
-<       - Default: Current setting for|ignorecase|
-        - Valid settings are 0 or 1.  
-        - When entering a few letters before initiating completion, the list
-          will be filtered to display only the entries which begin with the
-          list of characters.  When this option is set to 0, the list will be
-          filtered using case sensitivity. >
- 
+<	- Default: Current setting for|ignorecase|
+	- Valid settings are 0 or 1.
+	- When entering a few letters before initiating completion, the list
+	  will be filtered to display only the entries which begin with the
+	  list of characters.  When this option is set to 0, the list will be
+	  filtered using case sensitivity. >
+
     omni_sql_include_owner
-<       - Default: 0, unless dbext.vim 3.00 has been installed
-        - Valid settings are 0 or 1.  
-        - When completing tables, procedure or views and using dbext.vim 3.00 
-          or higher the list of objects will also include the owner name.
-          When completing these objects and omni_sql_include_owner is enabled
-          the owner name will be be replaced. >
- 
+<	- Default: 0, unless dbext.vim 3.00 has been installed
+	- Valid settings are 0 or 1.
+	- When completing tables, procedure or views and using dbext.vim 3.00
+	  or higher the list of objects will also include the owner name.
+	  When completing these objects and omni_sql_include_owner is enabled
+	  the owner name will be be replaced. >
+
     omni_sql_precache_syntax_groups
-<       - Default: 
-          ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement']
-        - sqlcomplete can be used in conjunction with other completion
-          plugins.  This is outlined at |sql-completion-filetypes|.  When the 
-          filetype is changed temporarily to SQL, the sqlcompletion plugin
-          will cache the syntax groups listed in the List specified in this
-          option.
+<	- Default:
+	  ['syntax','sqlKeyword','sqlFunction','sqlOption','sqlType','sqlStatement']
+	- sqlcomplete can be used in conjunction with other completion
+	  plugins.  This is outlined at |sql-completion-filetypes|.  When the
+	  filetype is changed temporarily to SQL, the sqlcompletion plugin
+	  will cache the syntax groups listed in the List specified in this
+	  option.
 >
- 
-4.5 SQL Maps	        			*sql-completion-maps*
+
+4.5 SQL Maps					*sql-completion-maps*
 ------------
 
 The default SQL maps have been described in other sections of this document in
@@ -656,9 +656,9 @@
 highlighting rules. >
     <C-C>a
 <       - Displays all SQL syntax items. >
-    <C-C>k 
+    <C-C>k
 <       - Displays all SQL syntax items defined as 'sqlKeyword'. >
-    <C-C>f 
+    <C-C>f
 <       - Displays all SQL syntax items defined as 'sqlFunction. >
     <C-C>o
 <       - Displays all SQL syntax items defined as 'sqlOption'. >
@@ -671,7 +671,7 @@
 ------------
 These are maps which use populate the completion list using the dbext.vim
 plugin. >
-    <C-C>t  
+    <C-C>t
 <       - Displays a list of tables. >
     <C-C>p
 <       - Displays a list of procedures. >
@@ -683,33 +683,33 @@
 <       - Displays a comma separated list of columns for a specific table. >
     <C-C>L
 <       - Displays a comma separated list of columns for a specific table.
-          This should only be used when the completion window is active. >
+	  This should only be used when the completion window is active. >
     <C-Right>
-<       - Displays a list of columns for the table currently highlighted in
-          the completion window.  <C-Right> is not recognized on most Unix
-          systems, so this maps is only created on the Windows platform.
-          If you would like the same feature on Unix, choose a different key
-          and make the same map in your vimrc. >
+<	- Displays a list of columns for the table currently highlighted in
+	  the completion window.  <C-Right> is not recognized on most Unix
+	  systems, so this maps is only created on the Windows platform.
+	  If you would like the same feature on Unix, choose a different key
+	  and make the same map in your vimrc. >
     <C-Left>
-<       - Displays the list of tables.
-          <C-Left> is not recognized on most Unix systems, so this maps is
-          only created on the Windows platform.  If you would like the same
-          feature on Unix, choose a different key and make the same map in
-          your vimrc. >
+<	- Displays the list of tables.
+	  <C-Left> is not recognized on most Unix systems, so this maps is
+	  only created on the Windows platform.  If you would like the same
+	  feature on Unix, choose a different key and make the same map in
+	  your vimrc. >
     <C-C>R
-<       - This maps removes all cached items and forces the SQL completion 
-          to regenerate the list of items.
+<	- This maps removes all cached items and forces the SQL completion
+	  to regenerate the list of items.
 
 Customizing Maps
 ----------------
 You can create as many additional key maps as you like.  Generally, the maps
-will be specifying different syntax highlight groups.  
+will be specifying different syntax highlight groups.
 
 If you do not wish the default maps created or the key choices do not work on
 your platform (often a case on *nix) you define the following variable in
 your |vimrc|: >
     let g:omni_sql_no_default_maps = 1
-  
+
 Do no edit ftplugin/sql.vim directly!  If you change this file your changes
 will be over written on future updates.  Vim has a special directory structure
 which allows you to make customizations without changing the files that are
@@ -718,9 +718,9 @@
 maps from the ftplugin/sql.vim in it using your own key strokes.  <C-C> was
 chosen since it will work on both Windows and *nix platforms.  On the windows
 platform you can also use <C-Space> or ALT keys.
- 
 
-4.6 Using with other filetypes		        *sql-completion-filetypes*
+
+4.6 Using with other filetypes			*sql-completion-filetypes*
 ------------------------------
 
 Many times SQL can be used with different filetypes.  For example Perl, Java,
@@ -758,6 +758,6 @@
 ------
 Setting the filetype back to Perl sets all the usual "perl" related items back
 as they were.
-     
+
 
 vim:tw=78:ts=8:ft=help:norl:
