Lorenzo Cappelletti aggiornò:

As usual...

[...]

Un po' di tempo fa avevo fatto qulche piccola modifica qua e là ai due file di sintassi per vim e questo ne era il risultato.

Se a qualcuno interessa lo allego così ci può dare un'occhiata... :)

Si tratta di un semplice file di sintassi, ma è in grado anche di gestire correttamente il folding delle sezioni e dei commenti (i comandi zo e zc di vim).

Utile quando le descrizioni sono lunghe o ci sono commenti i mezzo.

Fatemi sapere. :)

--
Buongiorno.
Complimenti per l'ottima scelta.

" Vim syntax file
" Language: DDTP server files
" Maintainer: Emanuele Aina <[EMAIL PROTECTED]>
" Last Change: Tue, 24 Sep 2002 22:33:15 +0200
" 
" Original work based on the scipt of Fabio Bonelli <[EMAIL PROTECTED]> 
" and Nicolas Bertolissio <[EMAIL PROTECTED]>.


" This script check the ddts_nofolding variable to disable the folding 
" method based on the syntax regions.




" 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


" Case-sensitive
syntax  case    match


" This matches the original description
syntax region ddtsOriginal   fold keepend transparent start=/^Description: / 
end=/\(^[^\t\ #]\)\|^$/me=e-1                      
contains=ddtsShortDesc,ddtsLongDesc

" This matches every localized description
syntax region ddtsTranslation fold keepend transparent 
start=/^Description-[a-z][a-z]/ end=/\(^[^\t\ #]\)\|^$/me=e-1 
contains=ddtsShortDesc,ddtsLongDesc


syntax match  ddtsShortDesc     
/^Description\(-[a-z][a-z]\(_[A-Z][A-Z]\)\?\)\?: .*/    contained 
contains=ddtsDescKey,ddtsDescTooLong,ddtsTodo,ddtsSpellError

syntax match  ddtsDescKey       
/^Description\(-[a-z][a-z]\(_[A-Z][A-Z]\)\?\)\?:/       contained 
nextgroup=ddtsDescTooLong 

syntax region ddtsLongDesc      fold keepend start=/^[\t\ #]/ end=/\(^[^\t\ 
#]\)\|^$/me=e-1             contained contains=ddtsParag,ddtsDot


" Long descriptions are divided in paragraph
syntax region ddtsParag fold start=/^[\t\ #][^\.]/ end=/ \.$/me=e-2 skip=/^#/ 
contained contains=ddtsComment,ddtsTooLong,ddtsError,ddtsTodo,ddtsSpellError

syntax match  ddtsDot   /^\ \.$/


syntax region ddtsComment fold start=/^#.*/ end=/^[^#]/me=e-1 
contains=ddtsHeader,ddtsTooLong,ddtsTranslatorComment,ddtsDiffRemoved,ddtsDiffAdded,ddtsSect

" Translators' comments 
syntax match  ddtsTranslatorComment display     /^##.*/ contained 
contains=ddtsTooLong 

" Diffs due to update or corrections
syntax match  ddtsDiffRemoved /^# -.*/
syntax match  ddtsDiffAdded   /^# +.*/



syntax match  ddtsTooLong /^\s\+\zs.*/ms=s+80                           
contained
syntax match  ddtsTooLong /^#.*/ms=s+80                                 
contained

syntax match  ddtsDescTooLong /.*/ms=s+80                               
contained



syntax match  ddtsTodo    /<\zstrans\ze>/

syntax match  ddtsError   /\t/          contained
syntax match  ddtsError   /^ \.\ze.\+/  contained


" Sections
syntax match  ddtsSect    /^# \zs\(original\|new\|old\|diff old-new\)\ze 
description.*/        contained
syntax match  ddtsSect    /^# \zs\(new\|old\|diff old-new\)\ze translation:.*/  
 contained
syntax match  ddtsSect    /^# \zsold translated\ze description:.*/       
contained


" Headers and commands

syntax match  ddtsHeader    /^# \(Packages\|Translator\|ddts 
id\|Bug-Nr.\|reviewer\): .*/       contains=ddtsHeaderKey,ddtsHeaderArg
syntax match  ddtsHeader    /^\(From\|BTSCLOSE\): .*/      
contains=ddtsHeaderKey,ddtsHeaderArg


syntax match  ddtsHeaderKey /\(From\|BTSCLOSE\|Packages\|Translator\|ddts 
id\|Bug-Nr.\|reviewer\):/     contained  contains=ddtsHeaderArg
syntax match  ddtsHeaderArg /: .*$/     contained contains=ddtsEmail

syntax match  ddtsEmail   /[_=a-z\./[EMAIL PROTECTED]/\-]\+/       contained 
contains=ddtsEmailSymbol
syntax match  ddtsEmail   /<.\{-}>/     contained contains=ddtsEmailSymbol
syntax match  ddtsEmailSymbol   /[<\@>]/



highlight def link ddtsDescKey          Keyword
highlight def link ddtsDot                      Type

highlight def link ddtsComment          Comment

highlight def link ddtsDiffRemoved      Special
highlight def link ddtsDiffAdded        Identifier

highlight def link ddtsTooLong          Error 
highlight def link ddtsDescTooLong      Error

highlight def link ddtsTodo                     Todo
highlight def link ddtsError            Error

highlight def link ddtsHeader           Comment
highlight def link ddtsHeaderKey        Identifier
highlight def link ddtsHeaderArg        NonText  


highlight ddtsTranslatorComment ctermbg=DarkBlue ctermfg=Grey
highlight ddtsSect      ctermfg=Magenta
highlight ddtsEmail     ctermfg=DarkBlue
highlight EmailSymbol   ctermfg=DarkMagenta


if !exists("ddts_nofolding")
  set foldmethod=syntax
  1,$foldopen!
endif


let b:current_syntax = "ddts"

Reply via email to