caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] revised syntax vim file
@ 2002-10-30 10:49 Issac Trotts
  2002-10-30 11:21 ` Stefano Zacchiroli
  0 siblings, 1 reply; 8+ messages in thread
From: Issac Trotts @ 2002-10-30 10:49 UTC (permalink / raw)
  To: OCaml Mailing List

Here's a patch to Markus Mottl's 
and Karl-Heinz Sylla's vim syntax file so it will work 
a bit better with the revised syntax.  

Issac 



--- ocaml.vim	2002-10-30 02:24:10.000000000 -0800
+++ ocamlrev.vim	2002-10-30 02:34:41.000000000 -0800
@@ -1,14 +1,17 @@
 " Vim syntax file
-" Language:     OCaml
+" Language:     ocaml revised syntax
 " Filenames:    *.ml *.mli *.mll *.mly
 " Maintainers:  Markus Mottl      <markus@oefai.at>
 "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
 " URL:          http://www.ai.univie.ac.at/~markus/vim/syntax/ocaml.vim
-" Last Change:  2001 Nov 20 - Fixed small bug with modules  (MM)
+" Last Change:  
+"               2002 Oct 30 - Small tweaks for revised syntax (IT)
+"               2001 Nov 20 - Fixed small bug with modules  (MM)
 "               2001 Sep 01 - Fixed small bug with '\''  (MM)
 "               2001 Aug 29 - Added rules for scripting directives  (MM)
 "               2001 Aug 28 - Upgraded URL & mail address  (MM)
 "               2001 Apr 26 - upgraded for new Vim version  (MM)
+"
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -33,8 +36,6 @@
 syn match    ocamlKeyChar    "|"
 
 " Errors
-syn match    ocamlBraceErr   "}"
-syn match    ocamlBrackErr   "\]"
 syn match    ocamlParenErr   ")"
 syn match    ocamlArrErr     "|]"
 
@@ -55,17 +56,15 @@
 endif
 
 " Some convenient clusters
-syn cluster  ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+syn cluster  ocamlAllErrs contains=ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
 
-syn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+syn cluster  ocamlAENoParen contains=ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
 
 syn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod
 
 
 " Enclosing delimiters
 syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}"  contains=ALLBUT,@ocamlContained,ocamlBraceErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
 syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
 
 
@@ -145,7 +144,7 @@
 syn keyword  ocamlKeyword  method mutable new of
 syn keyword  ocamlKeyword  parser private raise rec
 syn keyword  ocamlKeyword  try type
-syn keyword  ocamlKeyword  val virtual when while with
+syn keyword  ocamlKeyword  value virtual when while with
 
 syn keyword  ocamlType     array bool char exn float format int
 syn keyword  ocamlType     list option string unit
@@ -221,8 +220,6 @@
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink ocamlBraceErr     Error
-  HiLink ocamlBrackErr     Error
   HiLink ocamlParenErr     Error
   HiLink ocamlArrErr       Error
 
@@ -282,3 +279,5 @@
 let b:current_syntax = "ocaml"
 
 " vim: ts=28
+
+



-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 10:49 [Caml-list] revised syntax vim file Issac Trotts
@ 2002-10-30 11:21 ` Stefano Zacchiroli
  2002-10-30 11:34   ` Issac Trotts
  2002-10-30 11:39   ` Markus Mottl
  0 siblings, 2 replies; 8+ messages in thread
From: Stefano Zacchiroli @ 2002-10-30 11:21 UTC (permalink / raw)
  To: Issac Trotts; +Cc: OCaml Mailing List

On Wed, Oct 30, 2002 at 02:49:17AM -0800, Issac Trotts wrote:
> Here's a patch to Markus Mottl's 
> and Karl-Heinz Sylla's vim syntax file so it will work 
> a bit better with the revised syntax.  

Thanks for the patch!

May I forward your patch to the debian vim maintainer so that it can be
included in the debian vim package?

TIA,
Cheers.

-- 
Stefano Zacchiroli - undergraduate student of CS @ Univ. Bologna, Italy
zack@cs.unibo.it | ICQ# 33538863 | http://www.cs.unibo.it/~zacchiro
"I know you believe you understood what you think I said, but I am not
sure you realize that what you heard is not what I meant!" -- G.Romney
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 11:21 ` Stefano Zacchiroli
@ 2002-10-30 11:34   ` Issac Trotts
  2002-10-30 13:06     ` Markus Mottl
  2002-10-30 11:39   ` Markus Mottl
  1 sibling, 1 reply; 8+ messages in thread
From: Issac Trotts @ 2002-10-30 11:34 UTC (permalink / raw)
  To: OCaml Mailing List

On Wed, Oct 30, 2002 at 12:21:22PM +0100, Stefano Zacchiroli wrote:
> On Wed, Oct 30, 2002 at 02:49:17AM -0800, Issac Trotts wrote:
> > Here's a patch to Markus Mottl's 
> > and Karl-Heinz Sylla's vim syntax file so it will work 
> > a bit better with the revised syntax.  
> 
> Thanks for the patch!
> 
> May I forward your patch to the debian vim maintainer so that it can be
> included in the debian vim package?

Glad to help.  Please forward the patch below instead.
There is still the issue of how to make it co-exist with the
standard OCaml syntax.  Probably searching for the regular
expressions 

  ^value
  do {

in a .ml or .mli file would be enough to tell which syntax to 
use.  Is there a convention of having some other suffix for
revised syntax filenames?  

Issac


--- ocaml.vim	2002-10-30 02:24:10.000000000 -0800
+++ ocamlrev.vim	2002-10-30 03:18:24.000000000 -0800
@@ -1,14 +1,19 @@
 " Vim syntax file
-" Language:     OCaml
+" Language:     ocaml revised syntax
 " Filenames:    *.ml *.mli *.mll *.mly
 " Maintainers:  Markus Mottl      <markus@oefai.at>
 "               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
+" Revised:      Issac Trotts      <ijtrotts@ucdavis.edu>
 " URL:          http://www.ai.univie.ac.at/~markus/vim/syntax/ocaml.vim
-" Last Change:  2001 Nov 20 - Fixed small bug with modules  (MM)
+" Last Change:  
+"               2002 Oct 30 - Bug fixes (IT)
+"               2002 Oct 30 - Small tweaks for revised syntax (IT)
+"               2001 Nov 20 - Fixed small bug with modules  (MM)
 "               2001 Sep 01 - Fixed small bug with '\''  (MM)
 "               2001 Aug 29 - Added rules for scripting directives  (MM)
 "               2001 Aug 28 - Upgraded URL & mail address  (MM)
 "               2001 Apr 26 - upgraded for new Vim version  (MM)
+"
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -33,9 +38,6 @@
 syn match    ocamlKeyChar    "|"
 
 " Errors
-syn match    ocamlBraceErr   "}"
-syn match    ocamlBrackErr   "\]"
-syn match    ocamlParenErr   ")"
 syn match    ocamlArrErr     "|]"
 
 syn match    ocamlCommentErr "\*)"
@@ -55,17 +57,15 @@
 endif
 
 " Some convenient clusters
-syn cluster  ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+syn cluster  ocamlAllErrs contains=ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
 
-syn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
+syn cluster  ocamlAENoParen contains=ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr
 
 syn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod
 
 
 " Enclosing delimiters
 syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}"  contains=ALLBUT,@ocamlContained,ocamlBraceErr
-syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
 syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr
 
 
@@ -79,7 +79,7 @@
 
 
 " Blocks
-syn region   ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
+"syn region   ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr
 
 
 " "for"
@@ -139,20 +139,20 @@
 
 syn keyword  ocamlKeyword  and as assert class
 syn keyword  ocamlKeyword  constraint else
-syn keyword  ocamlKeyword  exception external fun function
+syn keyword  ocamlKeyword  exception external fun 
 syn keyword  ocamlKeyword  in inherit initializer
 syn keyword  ocamlKeyword  land lazy let match
 syn keyword  ocamlKeyword  method mutable new of
 syn keyword  ocamlKeyword  parser private raise rec
 syn keyword  ocamlKeyword  try type
-syn keyword  ocamlKeyword  val virtual when while with
+syn keyword  ocamlKeyword  value virtual when while with
 
 syn keyword  ocamlType     array bool char exn float format int
 syn keyword  ocamlType     list option string unit
 
-syn keyword  ocamlOperator asr lor lsl lsr lxor mod not or
+syn keyword  ocamlOperator asr lor lsl lsr lxor mod not 
 
-syn keyword  ocamlBoolean      true false
+syn keyword  ocamlBoolean      True False
 syn match    ocamlConstructor  "(\s*)"
 syn match    ocamlConstructor  "\[\s*\]"
 syn match    ocamlConstructor  "\[|\s*>|]"
@@ -177,7 +177,7 @@
 syn match    ocamlOperator     "::"
 syn match    ocamlOperator     "<-"
 syn match    ocamlAnyVar       "\<_\>"
-syn match    ocamlKeyChar      "!"
+" syn match    ocamlKeyChar      "!"
 syn match    ocamlKeyChar      "|[^\]]"me=e-1
 syn match    ocamlKeyChar      ";"
 syn match    ocamlKeyChar      "\~"
@@ -203,7 +203,7 @@
 
 syn sync match ocamlDoSync      grouphere  ocamlDo      "\<do\>"
 syn sync match ocamlDoSync      groupthere ocamlDo      "\<done\>"
-syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(begin\|object\)\>"
+syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<object\>"
 syn sync match ocamlEndSync     groupthere ocamlEnd     "\<end\>"
 syn sync match ocamlStructSync  grouphere  ocamlStruct  "\<struct\>"
 syn sync match ocamlStructSync  groupthere ocamlStruct  "\<end\>"
@@ -221,8 +221,6 @@
     command -nargs=+ HiLink hi def link <args>
   endif
 
-  HiLink ocamlBraceErr     Error
-  HiLink ocamlBrackErr     Error
   HiLink ocamlParenErr     Error
   HiLink ocamlArrErr       Error
 
@@ -282,3 +280,5 @@
 let b:current_syntax = "ocaml"
 
 " vim: ts=28
+
+



-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 11:21 ` Stefano Zacchiroli
  2002-10-30 11:34   ` Issac Trotts
@ 2002-10-30 11:39   ` Markus Mottl
  2002-10-30 11:54     ` Issac Trotts
  2002-10-30 12:25     ` Stefano Zacchiroli
  1 sibling, 2 replies; 8+ messages in thread
From: Markus Mottl @ 2002-10-30 11:39 UTC (permalink / raw)
  To: Issac Trotts, OCaml Mailing List

[-- Attachment #1: Type: text/plain, Size: 894 bytes --]

On Wed, 30 Oct 2002, Stefano Zacchiroli wrote:
> On Wed, Oct 30, 2002 at 02:49:17AM -0800, Issac Trotts wrote:
> > Here's a patch to Markus Mottl's 
> > and Karl-Heinz Sylla's vim syntax file so it will work 
> > a bit better with the revised syntax.  
> 
> Thanks for the patch!
> 
> May I forward your patch to the debian vim maintainer so that it can be
> included in the debian vim package?

It's not necessary to distribute patches separately! Just send them to
me so that I can adapt the syntax file. I have introduced a variable
"ocaml_revised", which allows you to toggle the right syntax highlighting:

  let ocaml_revised=1

Please tell me whether the change fills your needs!

Best regards,
Markus Mottl

-- 
Markus Mottl                                             markus@oefai.at
Austrian Research Institute
for Artificial Intelligence                  http://www.oefai.at/~markus

[-- Attachment #2: ocaml.vim --]
[-- Type: text/plain, Size: 12516 bytes --]

" Vim syntax file
" Language:     OCaml
" Filenames:    *.ml *.mli *.mll *.mly
" Maintainers:  Markus Mottl      <markus@oefai.at>
"               Karl-Heinz Sylla  <Karl-Heinz.Sylla@gmd.de>
" URL:          http://www.oefai.at/~markus/vim/syntax/ocaml.vim
" Last Change:  2002 Oct 30 - New variable "ocaml_revised" (MM)
"               2002 Oct 24 - Small fix for "module type" (MM)
"               2002 Jun 16 - Added "&&", "<" and ">" as operators (MM)

" 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

" OCaml is case sensitive.
syn case match

" Script headers highlighted like comments
syn match    ocamlComment   "^#!.*"

" Scripting directives
syn match    ocamlScript "^#\<\(quit\|labels\|warnings\|directory\|cd\|load\|use\|install_printer\|remove_printer\|trace\|untrace\|untrace_all\|print_depth\|print_length\)\>"

" lowercase identifier - the standard way to match
syn match    ocamlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/

syn match    ocamlKeyChar    "|"

" Errors
syn match    ocamlBraceErr   "}"
syn match    ocamlBrackErr   "\]"
syn match    ocamlParenErr   ")"
syn match    ocamlArrErr     "|]"

syn match    ocamlCommentErr "\*)"

syn match    ocamlCountErr   "\<downto\>"
syn match    ocamlCountErr   "\<to\>"

if !exists("ocaml_revised")
  syn match    ocamlDoErr      "\<do\>"
endif

syn match    ocamlDoneErr    "\<done\>"
syn match    ocamlThenErr    "\<then\>"

" Error-highlighting of "end" without synchronization:
" as keyword or as error (default)
if exists("ocaml_noend_error")
  syn match    ocamlKeyword    "\<end\>"
else
  syn match    ocamlEndErr     "\<end\>"
endif

" Some convenient clusters
syn cluster  ocamlAllErrs contains=ocamlBraceErr,ocamlBrackErr,ocamlParenErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr

syn cluster  ocamlAENoParen contains=ocamlBraceErr,ocamlBrackErr,ocamlCommentErr,ocamlCountErr,ocamlDoErr,ocamlDoneErr,ocamlEndErr,ocamlThenErr

syn cluster  ocamlContained contains=ocamlTodo,ocamlPreDef,ocamlModParam,ocamlModParam1,ocamlPreMPRestr,ocamlMPRestr,ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3,ocamlModRHS,ocamlFuncWith,ocamlFuncStruct,ocamlModTypeRestr,ocamlModTRWith,ocamlWith,ocamlWithRest,ocamlModType,ocamlFullMod


" Enclosing delimiters
syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="(" matchgroup=ocamlKeyword end=")" contains=ALLBUT,@ocamlContained,ocamlParenErr
syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="{" matchgroup=ocamlKeyword end="}"  contains=ALLBUT,@ocamlContained,ocamlBraceErr
syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[" matchgroup=ocamlKeyword end="\]" contains=ALLBUT,@ocamlContained,ocamlBrackErr
syn region   ocamlEncl transparent matchgroup=ocamlKeyword start="\[|" matchgroup=ocamlKeyword end="|\]" contains=ALLBUT,@ocamlContained,ocamlArrErr


" Comments
syn region   ocamlComment start="(\*" end="\*)" contains=ocamlComment,ocamlTodo
syn keyword  ocamlTodo contained TODO FIXME XXX


" Objects
syn region   ocamlEnd matchgroup=ocamlKeyword start="\<object\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr


" Blocks
syn region   ocamlEnd matchgroup=ocamlKeyword start="\<begin\>" matchgroup=ocamlKeyword end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr


" "for"
syn region   ocamlNone matchgroup=ocamlKeyword start="\<for\>" matchgroup=ocamlKeyword end="\<\(to\|downto\)\>" contains=ALLBUT,@ocamlContained,ocamlCountErr


" "do"
if !exists("ocaml_revised")
  syn region   ocamlDo matchgroup=ocamlKeyword start="\<do\>" matchgroup=ocamlKeyword end="\<done\>" contains=ALLBUT,@ocamlContained,ocamlDoneErr
endif

" "if"
syn region   ocamlNone matchgroup=ocamlKeyword start="\<if\>" matchgroup=ocamlKeyword end="\<then\>" contains=ALLBUT,@ocamlContained,ocamlThenErr


"" Modules

" "struct"
syn region   ocamlStruct matchgroup=ocamlModule start="\<struct\>" matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr

" "sig"
syn region   ocamlSig matchgroup=ocamlModule start="\<sig\>" matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
syn region   ocamlModSpec matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contained contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlModTRWith,ocamlMPRestr

" "open"
syn region   ocamlNone matchgroup=ocamlKeyword start="\<open\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@ocamlAllErrs,ocamlComment

" "include"
syn match    ocamlKeyword "\<include\>" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod

" "module" - somewhat complicated stuff ;-)
syn region   ocamlModule matchgroup=ocamlKeyword start="\<module\>" matchgroup=ocamlModule end="\<\u\(\w\|'\)*\>" contains=@ocamlAllErrs,ocamlComment skipwhite skipempty nextgroup=ocamlPreDef
syn region   ocamlPreDef start="."me=e-1 matchgroup=ocamlKeyword end="\l\|="me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam,ocamlModTypeRestr,ocamlModTRWith nextgroup=ocamlModPreRHS
syn region   ocamlModParam start="([^*]" end=")" contained contains=@ocamlAENoParen,ocamlModParam1
syn match    ocamlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlPreMPRestr

syn region   ocamlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@ocamlAllErrs,ocamlComment,ocamlMPRestr,ocamlModTypeRestr

syn region   ocamlMPRestr start=":" end="."me=e-1 contained contains=@ocamlComment skipwhite skipempty nextgroup=ocamlMPRestr1,ocamlMPRestr2,ocamlMPRestr3
syn region   ocamlMPRestr1 matchgroup=ocamlModule start="\ssig\s\=" matchgroup=ocamlModule end="\<end\>" contained contains=ALLBUT,@ocamlContained,ocamlEndErr,ocamlModule
syn region   ocamlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=ocamlKeyword end="->" contained contains=@ocamlAllErrs,ocamlComment,ocamlModParam skipwhite skipempty nextgroup=ocamlFuncWith,ocamlMPRestr2
syn match    ocamlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained
syn match    ocamlModPreRHS "=" contained skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
syn region   ocamlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=ocamlComment skipwhite skipempty nextgroup=ocamlModParam,ocamlFullMod
syn match    ocamlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=ocamlFuncWith

syn region   ocamlFuncWith start="([^*]"me=e-1 end=")" contained contains=ocamlComment,ocamlWith,ocamlFuncStruct skipwhite skipempty nextgroup=ocamlFuncWith
syn region   ocamlFuncStruct matchgroup=ocamlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=ocamlModule end="\<end\>" contains=ALLBUT,@ocamlContained,ocamlEndErr

syn match    ocamlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained
syn region   ocamlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@ocamlAENoParen,ocamlWith
syn match    ocamlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=ocamlWithRest
syn region   ocamlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@ocamlContained

" "module type"
syn region   ocamlKeyword start="\<module\>\s*\<type\>" matchgroup=ocamlModule end="\<\w\(\w\|'\)*\>" contains=ocamlComment skipwhite skipempty nextgroup=ocamlMTDef
syn match    ocamlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s

syn keyword  ocamlKeyword  and as assert class
syn keyword  ocamlKeyword  constraint else
syn keyword  ocamlKeyword  exception external fun function
syn keyword  ocamlKeyword  in inherit initializer
syn keyword  ocamlKeyword  land lazy let match
syn keyword  ocamlKeyword  method mutable new of
syn keyword  ocamlKeyword  parser private raise rec
syn keyword  ocamlKeyword  try type
syn keyword  ocamlKeyword  val virtual when while with

if exists("ocaml_revised")
  syn keyword  ocamlKeyword  do value
endif

syn keyword  ocamlType     array bool char exn float format int
syn keyword  ocamlType     list option string unit

syn keyword  ocamlOperator asr lor lsl lsr lxor mod not or

syn keyword  ocamlBoolean      true false
syn match    ocamlConstructor  "(\s*)"
syn match    ocamlConstructor  "\[\s*\]"
syn match    ocamlConstructor  "\[|\s*>|]"
syn match    ocamlConstructor  "\[<\s*>\]"
syn match    ocamlConstructor  "\u\(\w\|'\)*\>"

" Polymorphic variants
syn match    ocamlConstructor  "`\w\(\w\|'\)*\>"

" Module prefix
syn match    ocamlModPath      "\u\(\w\|'\)*\."he=e-1

syn match    ocamlCharacter    "'\\\d\d\d'\|'\\[\'ntbr]'\|'.'"
syn match    ocamlCharErr      "'\\\d\d'\|'\\\d'"
syn match    ocamlCharErr      "'\\[^\'ntbr]'"
syn region   ocamlString       start=+"+ skip=+\\\\\|\\"+ end=+"+

syn match    ocamlFunDef       "->"
syn match    ocamlRefAssign    ":="
syn match    ocamlTopStop      ";;"
syn match    ocamlOperator     "\^"
syn match    ocamlOperator     "::"
syn match    ocamlOperator     "<-"
syn match    ocamlOperator     "&&"
syn match    ocamlOperator     "<"
syn match    ocamlOperator     ">"
syn match    ocamlAnyVar       "\<_\>"
syn match    ocamlKeyChar      "!"
syn match    ocamlKeyChar      "|[^\]]"me=e-1
syn match    ocamlKeyChar      ";"
syn match    ocamlKeyChar      "\~"
syn match    ocamlKeyChar      "?"
syn match    ocamlKeyChar      "\*"
syn match    ocamlKeyChar      "="

syn match    ocamlNumber        "\<-\=\d\+\>"
syn match    ocamlNumber        "\<-\=0[x|X]\x\+\>"
syn match    ocamlNumber        "\<-\=0[o|O]\o\+\>"
syn match    ocamlNumber        "\<-\=0[b|B][01]\+\>"
syn match    ocamlFloat         "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"

" Labels
syn match    ocamlLabel        "\~\(\l\|_\)\(\w\|'\)*"lc=1
syn match    ocamlLabel        "?\(\l\|_\)\(\w\|'\)*"lc=1
syn region   ocamlLabel transparent matchgroup=ocamlLabel start="?(\(\l\|_\)\(\w\|'\)*"lc=2 end=")"me=e-1 contains=ALLBUT,@ocamlContained,ocamlParenErr


" Synchronization
syn sync minlines=50
syn sync maxlines=500

if !exists("ocaml_revised")
  syn sync match ocamlDoSync      grouphere  ocamlDo      "\<do\>"
  syn sync match ocamlDoSync      groupthere ocamlDo      "\<done\>"
endif

syn sync match ocamlEndSync     grouphere  ocamlEnd     "\<\(begin\|object\)\>"
syn sync match ocamlEndSync     groupthere ocamlEnd     "\<end\>"
syn sync match ocamlStructSync  grouphere  ocamlStruct  "\<struct\>"
syn sync match ocamlStructSync  groupthere ocamlStruct  "\<end\>"
syn sync match ocamlSigSync     grouphere  ocamlSig     "\<sig\>"
syn sync match ocamlSigSync     groupthere ocamlSig     "\<end\>"

" 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_ocaml_syntax_inits")
  if version < 508
    let did_ocaml_syntax_inits = 1
    command -nargs=+ HiLink hi link <args>
  else
    command -nargs=+ HiLink hi def link <args>
  endif

  HiLink ocamlBraceErr     Error
  HiLink ocamlBrackErr     Error
  HiLink ocamlParenErr     Error
  HiLink ocamlArrErr       Error

  HiLink ocamlCommentErr   Error

  HiLink ocamlCountErr     Error
  HiLink ocamlDoErr        Error
  HiLink ocamlDoneErr      Error
  HiLink ocamlEndErr       Error
  HiLink ocamlThenErr      Error

  HiLink ocamlCharErr      Error

  HiLink ocamlComment      Comment

  HiLink ocamlModPath      Include
  HiLink ocamlModule       Include
  HiLink ocamlModParam1    Include
  HiLink ocamlModType      Include
  HiLink ocamlMPRestr3     Include
  HiLink ocamlFullMod      Include
  HiLink ocamlModTypeRestr Include
  HiLink ocamlWith         Include
  HiLink ocamlMTDef        Include

  HiLink ocamlScript       Include

  HiLink ocamlConstructor  Constant

  HiLink ocamlModPreRHS    Keyword
  HiLink ocamlMPRestr2     Keyword
  HiLink ocamlKeyword      Keyword
  HiLink ocamlFunDef       Keyword
  HiLink ocamlRefAssign    Keyword
  HiLink ocamlKeyChar      Keyword
  HiLink ocamlAnyVar       Keyword
  HiLink ocamlTopStop      Keyword
  HiLink ocamlOperator     Keyword

  HiLink ocamlBoolean      Boolean
  HiLink ocamlCharacter    Character
  HiLink ocamlNumber       Number
  HiLink ocamlFloat        Float
  HiLink ocamlString       String

  HiLink ocamlLabel        Identifier

  HiLink ocamlType         Type

  HiLink ocamlTodo         Todo

  HiLink ocamlEncl         Keyword

  delcommand HiLink
endif

let b:current_syntax = "ocaml"

" vim: ts=28

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 11:39   ` Markus Mottl
@ 2002-10-30 11:54     ` Issac Trotts
  2002-10-30 12:15       ` Issac Trotts
  2002-10-30 12:25     ` Stefano Zacchiroli
  1 sibling, 1 reply; 8+ messages in thread
From: Issac Trotts @ 2002-10-30 11:54 UTC (permalink / raw)
  To: OCaml Mailing List

On Wed, Oct 30, 2002 at 12:39:40PM +0100, Markus Mottl wrote:
> On Wed, 30 Oct 2002, Stefano Zacchiroli wrote:
> > On Wed, Oct 30, 2002 at 02:49:17AM -0800, Issac Trotts wrote:
> > > Here's a patch to Markus Mottl's 
> > > and Karl-Heinz Sylla's vim syntax file so it will work 
> > > a bit better with the revised syntax.  
> > 
> > Thanks for the patch!
> > 
> > May I forward your patch to the debian vim maintainer so that it can be
> > included in the debian vim package?
> 
> It's not necessary to distribute patches separately! Just send them to
> me so that I can adapt the syntax file. I have introduced a variable
> "ocaml_revised", which allows you to toggle the right syntax highlighting:
> 
>   let ocaml_revised=1
> 
> Please tell me whether the change fills your needs!

Yours is better.  The only thing I would like to change is to make it
automatically decide which mode to use, depending on the contents
of the file.  

Issac


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 11:54     ` Issac Trotts
@ 2002-10-30 12:15       ` Issac Trotts
  0 siblings, 0 replies; 8+ messages in thread
From: Issac Trotts @ 2002-10-30 12:15 UTC (permalink / raw)
  To: OCaml Mailing List

On Wed, Oct 30, 2002 at 03:54:56AM -0800, Issac Trotts wrote:
> On Wed, Oct 30, 2002 at 12:39:40PM +0100, Markus Mottl wrote:
> > On Wed, 30 Oct 2002, Stefano Zacchiroli wrote:
> > > On Wed, Oct 30, 2002 at 02:49:17AM -0800, Issac Trotts wrote:
> > > > Here's a patch to Markus Mottl's 
> > > > and Karl-Heinz Sylla's vim syntax file so it will work 
> > > > a bit better with the revised syntax.  
> > > 
> > > Thanks for the patch!
> > > 
> > > May I forward your patch to the debian vim maintainer so that it can be
> > > included in the debian vim package?
> > 
> > It's not necessary to distribute patches separately! Just send them to
> > me so that I can adapt the syntax file. I have introduced a variable
> > "ocaml_revised", which allows you to toggle the right syntax highlighting:
> > 
> >   let ocaml_revised=1
> > 
> > Please tell me whether the change fills your needs!
> 
> Yours is better.  The only thing I would like to change is to make it
> automatically decide which mode to use, depending on the contents
> of the file.  

It would also help to highlight <- as an error (so new 
users of the revised syntax remember to use := instead). 
The compiler error message is not very helpful.

Issac


-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 11:39   ` Markus Mottl
  2002-10-30 11:54     ` Issac Trotts
@ 2002-10-30 12:25     ` Stefano Zacchiroli
  1 sibling, 0 replies; 8+ messages in thread
From: Stefano Zacchiroli @ 2002-10-30 12:25 UTC (permalink / raw)
  To: OCaml Mailing List; +Cc: Issac Trotts

On Wed, Oct 30, 2002 at 12:39:40PM +0100, Markus Mottl wrote:
> It's not necessary to distribute patches separately! Just send them to
> me so that I can adapt the syntax file. I have introduced a variable

Ok your new ocaml vim is good for me, I suggest to add Issac Trotts to
the list of ocaml.vim maintainer though.

As another issue: are you in touch, Markus, with debian vim maintainer
to let him know that a new ocaml.vim version is available?
Alternatively I can fill a whishlist bug against vim asking for the
inclusion of the new ocaml.vim file.

Thanks,
Cheers.

-- 
Stefano Zacchiroli - undergraduate student of CS @ Univ. Bologna, Italy
zack@cs.unibo.it | ICQ# 33538863 | http://www.cs.unibo.it/~zacchiro
"I know you believe you understood what you think I said, but I am not
sure you realize that what you heard is not what I meant!" -- G.Romney
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Caml-list] revised syntax vim file
  2002-10-30 11:34   ` Issac Trotts
@ 2002-10-30 13:06     ` Markus Mottl
  0 siblings, 0 replies; 8+ messages in thread
From: Markus Mottl @ 2002-10-30 13:06 UTC (permalink / raw)
  To: Issac Trotts; +Cc: OCaml Mailing List

On Wed, 30 Oct 2002, Issac Trotts wrote:
> There is still the issue of how to make it co-exist with the
> standard OCaml syntax.

This is best solved using variables ("ocaml_revised").

> Probably searching for the regular
> expressions 
> 
>   ^value
>   do {
> 
> in a .ml or .mli file would be enough to tell which syntax to 
> use.  Is there a convention of having some other suffix for
> revised syntax filenames?  

I am not sure about the best way to identify the correct filetype. Other
suffices would be most helpful, then followed by a comment in the topmost
line to indicate the use of revised syntax. The most complicated solution
would involve scanning the file for keywords. I'd discourage this option.

Please mail me directly for further suggestions!

Best regards,
Markus Mottl

-- 
Markus Mottl                                             markus@oefai.at
Austrian Research Institute
for Artificial Intelligence                  http://www.oefai.at/~markus
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2002-10-30 13:06 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-30 10:49 [Caml-list] revised syntax vim file Issac Trotts
2002-10-30 11:21 ` Stefano Zacchiroli
2002-10-30 11:34   ` Issac Trotts
2002-10-30 13:06     ` Markus Mottl
2002-10-30 11:39   ` Markus Mottl
2002-10-30 11:54     ` Issac Trotts
2002-10-30 12:15       ` Issac Trotts
2002-10-30 12:25     ` Stefano Zacchiroli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).