I have a file that works like this:

```
:: JavaScript
function whatIsThis(){
    return "an example";
}

:: Haskell
main = putStrLn "is this is an example?"

:: C
#include <stdio.h>
int main(){
    printf("yes, it is");
};

```

In other words, a line starting with `::` determines the syntax of the next lines until another `::` is found. Is there any way to configure vim to highlight the syntax of those blocks correctly?