view runtime/syntax/clean.vim @ 4615:5679b8ddd8cc v7.3.1055

updated for version 7.3.1055 Problem: Negated collection does not match newline. Solution: Handle newline differently. (Hiroshi Shirosaki)
author Bram Moolenaar <bram@vim.org>
date Thu, 30 May 2013 11:51:08 +0200
parents cf1d93a3914a
children ceb5f21cda79
line wrap: on
line source

" Vim syntax file
" Language:		Clean
" Author:		Pieter van Engelen <pietere@sci.kun.nl>
" Co-Author:	Arthur van Leeuwen <arthurvl@sci.kun.nl>
" Previous Change:	2011 Dec 25 by Thilo Six
" Last Change:	2013 Apr 25 by Jurriƫn Stutterheim

" 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

let s:cpo_save = &cpo
set cpo&vim

" Some Clean-keywords
syn keyword cleanConditional if case
syn keyword cleanLabel let! with where in of
syn keyword cleanInclude from import qualified
syn keyword cleanSpecial Start
syn keyword cleanKeyword infixl infixr infix
syn keyword cleanBasicType Int Real Char Bool String
syn keyword cleanSpecialType World ProcId Void Files File
syn keyword cleanModuleSystem module implementation definition system
syn keyword cleanTypeClass class instance export

" To do some Denotation Highlighting
syn keyword cleanBoolDenot True False
syn region  cleanStringDenot start=+"+ end=+"+
syn match cleanCharDenot "'.'"
syn match cleanCharsDenot "'[^'\\]*\(\\.[^'\\]\)*'" contained
syn match cleanIntegerDenot "[+-~]\=\<\(\d\+\|0[0-7]\+\|0x[0-9A-Fa-f]\+\)\>"
syn match cleanRealDenot "[+-~]\=\<\d\+\.\d+\(E[+-~]\=\d+\)\="

" To highlight the use of lists, tuples and arrays
syn region cleanList start="\[" end="\]" contains=ALL
syn region cleanRecord start="{" end="}" contains=ALL
syn region cleanArray start="{:" end=":}" contains=ALL
syn match cleanTuple "([^=]*,[^=]*)" contains=ALL

" To do some Comment Highlighting
syn region cleanComment start="/\*"  end="\*/" contains=cleanComment
syn match cleanComment "//.*"

" Now for some useful typedefinitionrecognition
syn match cleanFuncTypeDef "\([a-zA-Z].*\|(\=[-~@#$%^?!+*<>\/|&=:]\+)\=\)[ \t]*\(infix[lr]\=\)\=[ \t]*\d\=[ \t]*::.*->.*" contains=cleanSpecial

" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_clean_syntax_init")
  if version < 508
    let did_clean_syntax_init = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

   " Comments
   HiLink cleanComment      Comment
   " Constants and denotations
   HiLink cleanCharsDenot   String
   HiLink cleanStringDenot  String
   HiLink cleanCharDenot    Character
   HiLink cleanIntegerDenot Number
   HiLink cleanBoolDenot    Boolean
   HiLink cleanRealDenot    Float
   " Identifiers
   " Statements
   HiLink cleanTypeClass    Keyword
   HiLink cleanConditional  Conditional
   HiLink cleanLabel		Label
   HiLink cleanKeyword      Keyword
   " Generic Preprocessing
   HiLink cleanInclude      Include
   HiLink cleanModuleSystem PreProc
   " Type
   HiLink cleanBasicType    Type
   HiLink cleanSpecialType  Type
   HiLink cleanFuncTypeDef  Typedef
   " Special
   HiLink cleanSpecial      Special
   HiLink cleanList			Special
   HiLink cleanArray		Special
   HiLink cleanRecord		Special
   HiLink cleanTuple		Special
   " Error
   " Todo

  delcommand HiLink
endif

let b:current_syntax = "clean"

let &cpo = s:cpo_save
unlet s:cpo_save
" vim: ts=4