mirror of
				https://github.com/vim/vim.git
				synced 2025-10-30 09:47:20 -04:00 
			
		
		
		
	
		
			
	
	
		
			294 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			294 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:    SQL, SAP HANA In Memory Database | ||
|  | " Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com> | ||
|  | " Last Change: 2012 Oct 23 | ||
|  | " Version:     SP4 b (Q2 2012) | ||
|  | " Homepage:    http://www.vim.org/scripts/script.php?script_id=4275 | ||
|  | 
 | ||
|  | " Description: Updated to SAP HANA SP4 | ||
|  | " | ||
|  | " For version 5.x: Clear all syntax items | ||
|  | " For version 6.x: Quit when a syntax file was already loaded | ||
|  | if version < 600 | ||
|  |     syntax clear | ||
|  | elseif exists("b:current_syntax") | ||
|  |     finish | ||
|  | endif | ||
|  | 
 | ||
|  | syn case ignore | ||
|  | 
 | ||
|  | " The SQL reserved words, defined as keywords. | ||
|  | " These were pulled from the following SQL reference: | ||
|  | "     http://help.sap.com/hana/hana_sql_en.pdf | ||
|  | " An easy approach is to copy all text from the PDF | ||
|  | " into a Vim buffer.  The keywords are in UPPER case, | ||
|  | " so you can run the following commands to be left with | ||
|  | " mainly the UPPER case words: | ||
|  | "   1.  Delete all words that do not begin with a Capital | ||
|  | "       %s/\(\<[^A-Z]\w*\>\)//g | ||
|  | "   2.  Remove all words where the 2nd letter is not a Capital | ||
|  | "       %s/\(\<[A-Z][^A-Z]\w*\>\)//g | ||
|  | "   3.  Remove all non-word (or space) characters | ||
|  | "       %s/[^0-9A-Za-z_ ]*//g | ||
|  | "   4.  Remove some known words | ||
|  | "       %s/\<\(SAP\|HANA\|OK\|AG\|IBM\|DB2\|AIX\|POWER\d\+\|UNIX\)\>//g | ||
|  | "   5.  Remove blank lines and trailing spaces | ||
|  | "       %s/\s\+$//g | ||
|  | "       %s/^\s\+//g | ||
|  | "       %s/^$\n//g | ||
|  | "   6.  Convert spaces to newlines remove single character | ||
|  | "       %s/[ ]\+/\r/g | ||
|  | "       %g/^\w$/d | ||
|  | "   7.  Sort and remove duplicates | ||
|  | "       :sort | ||
|  | "       :Uniq | ||
|  | "   8.  Use the WhatsMissing plugin against the sqlhana.vim file. | ||
|  | "   9.  Generated a file of all UPPER cased words which should not | ||
|  | "       be in the syntax file.  These items should be removed | ||
|  | "       from the list in step 7.  You can use WhatsNotMissing | ||
|  | "       between step 7 and this new file to weed out the words | ||
|  | "       we know are not syntax related. | ||
|  | "  10.  Use the WhatsMissingRemoveMatches to remove the words | ||
|  | "       from step 9. | ||
|  | 
 | ||
|  | syn keyword sqlSpecial  false null true | ||
|  | 
 | ||
|  | " Supported Functions for Date/Time types | ||
|  | syn keyword sqlFunction	 ADD_DAYS ADD_MONTHS ADD_SECONDS ADD_YEARS COALESCE | ||
|  | syn keyword sqlFunction	 CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_UTCDATE | ||
|  | syn keyword sqlFunction	 CURRENT_UTCTIME CURRENT_UTCTIMESTAMP | ||
|  | syn keyword sqlFunction	 DAYNAME DAYOFMONTH DAYOFYEAR DAYS_BETWEEN EXTRACT | ||
|  | syn keyword sqlFunction	 GREATEST HOUR IFNULL ISOWEEK LAST_DAY LEAST LOCALTOUTC | ||
|  | syn keyword sqlFunction	 MINUTE MONTH MONTHNAME NEXT_DAY NOW QUARTER SECOND | ||
|  | syn keyword sqlFunction	 SECONDS_BETWEEN UTCTOLOCAL WEEK WEEKDAY YEAR | ||
|  | 
 | ||
|  | syn keyword sqlFunction	 TO_CHAR TO_DATE TO_DATS TO_NCHAR TO_TIME TO_TIMESTAMP UTCTOLOCAL | ||
|  | 
 | ||
|  | " Aggregate | ||
|  | syn keyword sqlFunction	 COUNT MIN MAX SUM AVG STDDEV VAR | ||
|  | 
 | ||
|  | " Datatype conversion | ||
|  | syn keyword sqlFunction	 CAST TO_ALPHANUM TO_BIGINT TO_BINARY TO_BLOB TO_CHAR TO_CLOB | ||
|  | syn keyword sqlFunction	 TO_DATE TO_DATS TO_DECIMAL TO_DOUBLE TO_INT TO_INTEGER TO_NCHAR | ||
|  | syn keyword sqlFunction	 TO_NCLOB TO_NVARCHAR TO_REAL TO_SECONDDATE TO_SMALLDECIMAL | ||
|  | syn keyword sqlFunction	 TO_SMALLINT TO_TIME TO_TIMESTAMP TO_TINYINT TO_VARCHAR TO_VARBINARY | ||
|  | 
 | ||
|  | " Number functions | ||
|  | syn keyword sqlFunction	 ABS ACOS ASIN ATAN ATAN2 BINTOHEX BITAND CEIL COS COSH COT | ||
|  | syn keyword sqlFunction	 EXP FLOOR GREATEST HEXTOBIN LEAST LN LOG MOD POWER ROUND | ||
|  | syn keyword sqlFunction	 SIGN SIN SINH SQRT TAN TANH UMINUS | ||
|  | 
 | ||
|  | " String functions | ||
|  | syn keyword sqlFunction	 ASCII CHAR CONCAT LCASE LENGTH LOCATE LOWER LPAD LTRIM | ||
|  | syn keyword sqlFunction	 NCHAR REPLACE RPAD RTRIM SUBSTR_AFTER SUBSTR_BEFORE | ||
|  | syn keyword sqlFunction	 SUBSTRING TRIM UCASE UNICODE UPPER | ||
|  | 
 | ||
|  | " Miscellaneous functions | ||
|  | syn keyword sqlFunction	 COALESCE CURRENT_CONNECTION CURRENT_SCHEMA CURRENT_USER | ||
|  | syn keyword sqlFunction	 GROUPING_ID IFNULL MAP NULLIF SESSION_CONTEXT SESSION_USER SYSUUIDSQL | ||
|  | syn keyword sqlFunction	 GET_NUM_SERVERS | ||
|  | 
 | ||
|  | 
 | ||
|  | " sp_ procedures | ||
|  | " syn keyword sqlFunction  sp_addalias | ||
|  | 
 | ||
|  | 
 | ||
|  | " Reserved keywords | ||
|  | syn keyword sqlkeyword   ALL AS AT BEFORE | ||
|  | syn keyword sqlkeyword   BEGIN BOTH BY | ||
|  | syn keyword sqlkeyword   CONDITION | ||
|  | syn keyword sqlkeyword   CURRVAL CURSOR DECLARE | ||
|  | syn keyword sqlkeyword   DISTINCT DO ELSE ELSEIF ELSIF | ||
|  | syn keyword sqlkeyword   END EXCEPTION EXEC | ||
|  | syn keyword sqlkeyword   FOR FROM GROUP | ||
|  | syn keyword sqlkeyword   HAVING IN | ||
|  | syn keyword sqlkeyword   INOUT INTO IS | ||
|  | syn keyword sqlkeyword   LEADING | ||
|  | syn keyword sqlkeyword   LOOP MINUS NATURAL NEXTVAL | ||
|  | syn keyword sqlkeyword   OF ON ORDER OUT | ||
|  | syn keyword sqlkeyword   PRIOR RETURN RETURNS REVERSE | ||
|  | syn keyword sqlkeyword   ROWID SELECT | ||
|  | syn keyword sqlkeyword   SQL START STOP SYSDATE | ||
|  | syn keyword sqlkeyword   SYSTIME SYSTIMESTAMP SYSUUID | ||
|  | syn keyword sqlkeyword   TRAILING USING UTCDATE | ||
|  | syn keyword sqlkeyword   UTCTIME UTCTIMESTAMP VALUES | ||
|  | syn keyword sqlkeyword   WHILE | ||
|  | syn keyword sqlkeyword   ANY SOME EXISTS ESCAPE | ||
|  | 
 | ||
|  | " IF keywords | ||
|  | syn keyword sqlkeyword	 IF | ||
|  | 
 | ||
|  | " CASE keywords | ||
|  | syn keyword sqlKeyword	 WHEN THEN | ||
|  | 
 | ||
|  | " Syntax rules common to TEXT and SHORTTEXT keywords | ||
|  | syn keyword sqlKeyword	 LANGUAGE DETECTION LINGUISTIC | ||
|  | syn keyword sqlkeyword   MIME TYPE | ||
|  | syn keyword sqlkeyword   EXACT WEIGHT FUZZY FUZZINESSTHRESHOLD SEARCH | ||
|  | syn keyword sqlkeyword   PHRASE INDEX RATIO REBUILD | ||
|  | syn keyword sqlkeyword   CONFIGURATION | ||
|  | syn keyword sqlkeyword   SEARCH ONLY | ||
|  | syn keyword sqlkeyword   FAST PREPROCESS | ||
|  | syn keyword sqlkeyword   SYNC SYNCHRONOUS ASYNC ASYNCHRONOUS FLUSH QUEUE | ||
|  | syn keyword sqlkeyword   EVERY AFTER MINUTES DOCUMENTS SUSPEND | ||
|  | 
 | ||
|  | " Statement keywords (i.e. after ALTER or CREATE) | ||
|  | syn keyword sqlkeyword   AUDIT POLICY | ||
|  | syn keyword sqlkeyword   FULLTEXT | ||
|  | syn keyword sqlkeyword   SEQUENCE RESTART | ||
|  | syn keyword sqlkeyword   TABLE | ||
|  | syn keyword sqlkeyword   PROCEDURE STATISTICS | ||
|  | syn keyword sqlkeyword   SCHEMA | ||
|  | syn keyword sqlkeyword   SYNONYM | ||
|  | syn keyword sqlkeyword   VIEW | ||
|  | syn keyword sqlkeyword   COLUMN | ||
|  | syn keyword sqlkeyword   SYSTEM LICENSE | ||
|  | syn keyword sqlkeyword   SESSION | ||
|  | syn keyword sqlkeyword   CANCEL WORK | ||
|  | syn keyword sqlkeyword   PLAN CACHE | ||
|  | syn keyword sqlkeyword   LOGGING NOLOGGING RETENTION | ||
|  | syn keyword sqlkeyword   RECONFIGURE SERVICE | ||
|  | syn keyword sqlkeyword   RESET MONITORING | ||
|  | syn keyword sqlkeyword   SAVE DURATION PERFTRACE FUNCTION_PROFILER | ||
|  | syn keyword sqlkeyword   SAVEPOINT | ||
|  | syn keyword sqlkeyword   USER | ||
|  | syn keyword sqlkeyword   ROLE | ||
|  | syn keyword sqlkeyword   ASC DESC | ||
|  | syn keyword sqlkeyword   OWNED | ||
|  | syn keyword sqlkeyword   DEPENDENCIES SCRAMBLE | ||
|  | 
 | ||
|  | " Create sequence | ||
|  | syn keyword sqlkeyword   INCREMENT MAXVALUE MINVALUE CYCLE | ||
|  | 
 | ||
|  | " Create table | ||
|  | syn keyword sqlkeyword   HISTORY GLOBAL LOCAL TEMPORARY | ||
|  | 
 | ||
|  | " Create trigger | ||
|  | syn keyword sqlkeyword   TRIGGER REFERENCING EACH DEFAULT | ||
|  | syn keyword sqlkeyword   SIGNAL RESIGNAL MESSAGE_TEXT OLD NEW | ||
|  | syn keyword sqlkeyword   EXIT HANDLER SQL_ERROR_CODE | ||
|  | syn keyword sqlkeyword   TARGET CONDITION SIGNAL | ||
|  | 
 | ||
|  | " Alter table | ||
|  | syn keyword sqlkeyword   ADD DROP MODIFY GENERATED ALWAYS | ||
|  | syn keyword sqlkeyword   UNIQUE BTREE CPBTREE PRIMARY KEY | ||
|  | syn keyword sqlkeyword   CONSTRAINT PRELOAD NONE | ||
|  | syn keyword sqlkeyword   ROW THREADS BATCH | ||
|  | syn keyword sqlkeyword   MOVE PARTITION TO LOCATION PHYSICAL OTHERS | ||
|  | syn keyword sqlkeyword   ROUNDROBIN PARTITIONS HASH RANGE VALUE | ||
|  | syn keyword sqlkeyword   PERSISTENT DELTA AUTO AUTOMERGE | ||
|  | 
 | ||
|  | " Create audit policy | ||
|  | syn keyword sqlkeyword   AUDITING SUCCESSFUL UNSUCCESSFUL | ||
|  | syn keyword sqlkeyword	 PRIVILEGE STRUCTURED CHANGE LEVEL | ||
|  | syn keyword sqlkeyword	 EMERGENCY ALERT CRITICAL WARNING INFO | ||
|  | 
 | ||
|  | " Privileges | ||
|  | syn keyword sqlkeyword   DEBUG EXECUTE | ||
|  | 
 | ||
|  | " Schema | ||
|  | syn keyword sqlkeyword   CASCADE RESTRICT PARAMETERS SCAN | ||
|  | 
 | ||
|  | " Traces | ||
|  | syn keyword sqlkeyword   CLIENT CRASHDUMP EMERGENCYDUMP | ||
|  | syn keyword sqlkeyword   INDEXSERVER NAMESERVER DAEMON | ||
|  | syn keyword sqlkeyword   CLEAR REMOVE TRACES | ||
|  | 
 | ||
|  | " Reclaim | ||
|  | syn keyword sqlkeyword   RECLAIM DATA VOLUME VERSION SPACE DEFRAGMENT SPARSIFY | ||
|  | 
 | ||
|  | " Join | ||
|  | syn keyword sqlkeyword   INNER OUTER LEFT RIGHT FULL CROSS JOIN | ||
|  | syn keyword sqlkeyword   GROUPING SETS ROLLUP CUBE | ||
|  | syn keyword sqlkeyword   BEST LIMIT OFFSET | ||
|  | syn keyword sqlkeyword   WITH SUBTOTAL BALANCE TOTAL | ||
|  | syn keyword sqlkeyword   TEXT_FILTER FILL UP SORT MATCHES TOP | ||
|  | syn keyword sqlkeyword   RESULT OVERVIEW PREFIX MULTIPLE RESULTSETS | ||
|  | 
 | ||
|  | " Lock | ||
|  | syn keyword sqlkeyword   EXCLUSIVE MODE NOWAIT | ||
|  | 
 | ||
|  | " Transaction | ||
|  | syn keyword sqlkeyword   TRANSACTION ISOLATION READ COMMITTED | ||
|  | syn keyword sqlkeyword   REPEATABLE SERIALIZABLE WRITE | ||
|  | 
 | ||
|  | " Saml | ||
|  | syn keyword sqlkeyword   SAML ASSERTION PROVIDER SUBJECT ISSUER | ||
|  | 
 | ||
|  | " User | ||
|  | syn keyword sqlkeyword   PASSWORD IDENTIFIED EXTERNALLY ATTEMPTS ATTEMPTS | ||
|  | syn keyword sqlkeyword	 ENABLE DISABLE OFF LIFETIME FORCE DEACTIVATE | ||
|  | syn keyword sqlkeyword	 ACTIVATE IDENTITY KERBEROS | ||
|  | 
 | ||
|  | " Grant | ||
|  | syn keyword sqlkeyword   ADMIN BACKUP CATALOG SCENARIO INIFILE MONITOR | ||
|  | syn keyword sqlkeyword   OPTIMIZER OPTION | ||
|  | syn keyword sqlkeyword   RESOURCE STRUCTUREDPRIVILEGE TRACE | ||
|  | 
 | ||
|  | " Import | ||
|  | syn keyword sqlkeyword   CSV FILE CONTROL NO CHECK SKIP FIRST LIST | ||
|  | syn keyword sqlkeyword	 RECORD DELIMITED FIELD OPTIONALLY ENCLOSED FORMAT | ||
|  | 
 | ||
|  | " Roles | ||
|  | syn keyword sqlkeyword   PUBLIC CONTENT_ADMIN MODELING MONITORING | ||
|  | 
 | ||
|  | " Miscellaneous | ||
|  | syn keyword sqlkeyword   APPLICATION BINARY IMMEDIATE COREFILE SECURITY DEFINER | ||
|  | syn keyword sqlkeyword   DUMMY INVOKER MATERIALIZED MESSEGE_TEXT PARAMETER PARAMETERS | ||
|  | syn keyword sqlkeyword   PART | ||
|  | syn keyword sqlkeyword   CONSTANT SQLEXCEPTION SQLWARNING | ||
|  | 
 | ||
|  | syn keyword sqlOperator  WHERE BETWEEN LIKE NULL CONTAINS | ||
|  | syn keyword sqlOperator  AND OR NOT CASE | ||
|  | syn keyword sqlOperator  UNION INTERSECT EXCEPT | ||
|  | 
 | ||
|  | syn keyword sqlStatement ALTER CALL CALLS CREATE DROP RENAME TRUNCATE | ||
|  | syn keyword sqlStatement DELETE INSERT UPDATE EXPLAIN | ||
|  | syn keyword sqlStatement MERGE REPLACE UPSERT SELECT | ||
|  | syn keyword sqlStatement SET UNSET LOAD UNLOAD | ||
|  | syn keyword sqlStatement CONNECT DISCONNECT COMMIT LOCK ROLLBACK | ||
|  | syn keyword sqlStatement GRANT REVOKE | ||
|  | syn keyword sqlStatement EXPORT IMPORT | ||
|  | 
 | ||
|  | 
 | ||
|  | syn keyword sqlType	 DATE TIME SECONDDATE TIMESTAMP TINYINT SMALLINT | ||
|  | syn keyword sqlType	 INT INTEGER BIGINT SMALLDECIMAL DECIMAL | ||
|  | syn keyword sqlType	 REAL DOUBLE FLOAT | ||
|  | syn keyword sqlType	 VARCHAR NVARCHAR ALPHANUM SHORTTEXT VARBINARY | ||
|  | syn keyword sqlType	 BLOB CLOB NCLOB TEXT DAYDATE | ||
|  | 
 | ||
|  | syn keyword sqlOption    Webservice_namespace_host | ||
|  | 
 | ||
|  | " Strings and characters: | ||
|  | syn region sqlString		start=+"+    end=+"+ contains=@Spell | ||
|  | syn region sqlString		start=+'+    end=+'+ contains=@Spell | ||
|  | 
 | ||
|  | " Numbers: | ||
|  | syn match sqlNumber		"-\=\<\d*\.\=[0-9_]\>" | ||
|  | 
 | ||
|  | " Comments: | ||
|  | syn region sqlDashComment	start=/--/ end=/$/ contains=@Spell | ||
|  | syn region sqlSlashComment	start=/\/\// end=/$/ contains=@Spell | ||
|  | syn region sqlMultiComment	start="/\*" end="\*/" contains=sqlMultiComment,@Spell | ||
|  | syn cluster sqlComment	contains=sqlDashComment,sqlSlashComment,sqlMultiComment,@Spell | ||
|  | syn sync ccomment sqlComment | ||
|  | syn sync ccomment sqlDashComment | ||
|  | syn sync ccomment sqlSlashComment | ||
|  | 
 | ||
|  | hi def link sqlDashComment	Comment | ||
|  | hi def link sqlSlashComment	Comment | ||
|  | hi def link sqlMultiComment	Comment | ||
|  | hi def link sqlNumber	        Number | ||
|  | hi def link sqlOperator	        Operator | ||
|  | hi def link sqlSpecial	        Special | ||
|  | hi def link sqlKeyword	        Keyword | ||
|  | hi def link sqlStatement	Statement | ||
|  | hi def link sqlString	        String | ||
|  | hi def link sqlType	        Type | ||
|  | hi def link sqlFunction	        Function | ||
|  | hi def link sqlOption	        PreProc | ||
|  | 
 | ||
|  | let b:current_syntax = "sqlhana" | ||
|  | 
 | ||
|  | " vim:sw=4: |