Skip to content

Commit 83ae5d2

Browse files
ComanderPsmorimoto
andauthored
Enhance dune syntax highlighting for ctypes and deps (#1851)
* Enhance dune syntax highlighting for ctypes and deps * Fix comment in syntaxes/dune.json Co-authored-by: Sora Morimoto <[email protected]> * Add CHANGELOG entry * Refine regex patterns in `dune.json` and `mlx.json` Signed-off-by: Sora Morimoto <[email protected]> --------- Signed-off-by: Sora Morimoto <[email protected]> Co-authored-by: Sora Morimoto <[email protected]>
1 parent 19ed469 commit 83ae5d2

File tree

3 files changed

+308
-3
lines changed

3 files changed

+308
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## Unreleased
44

55
- Add mlx syntax highlight (#1802)
6+
- Enhance dune syntax highlighting for ctypes and deps (#1851)
67
- Remove broken quoted string literal highlighting from grammar. Quoted strings
78
are already highlighted correctly by the language server. (#1860)
89

syntaxes/dune.json

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1573,6 +1573,32 @@
15731573
]
15741574
},
15751575
"dependencies": {
1576+
"patterns": [
1577+
{
1578+
"comment": "dependency with name",
1579+
"begin": "\\([[:space:]]*(:[[:word:]]+\\b)",
1580+
"end": "\\)",
1581+
"beginCaptures": {
1582+
"1": {
1583+
"name": "entity.name.function.action.dune"
1584+
}
1585+
},
1586+
"patterns": [
1587+
{
1588+
"include": "#deps"
1589+
},
1590+
{
1591+
"include": "#general"
1592+
}
1593+
]
1594+
},
1595+
{
1596+
"comment": "dependency without name",
1597+
"include": "#deps"
1598+
}
1599+
]
1600+
},
1601+
"deps": {
15761602
"patterns": [
15771603
{
15781604
"comment": "dependencies/file",
@@ -2484,6 +2510,10 @@
24842510
}
24852511
]
24862512
},
2513+
{
2514+
"comment": "ctypes",
2515+
"include": "#ctypes"
2516+
},
24872517
{
24882518
"comment": "ocamlopt_flags",
24892519
"begin": "\\([[:space:]]*(ocamlopt_flags)\\b",
@@ -2707,6 +2737,280 @@
27072737
}
27082738
]
27092739
},
2740+
"ctypes": {
2741+
"patterns": [
2742+
{
2743+
"comment": "ctypes",
2744+
"begin": "\\([[:space:]]*(ctypes)\\b",
2745+
"end": "\\)",
2746+
"beginCaptures": {
2747+
"1": {
2748+
"name": "keyword.language.dune"
2749+
}
2750+
},
2751+
"patterns": [
2752+
{
2753+
"comment": "external_library_name",
2754+
"begin": "\\([[:space:]]*(external_library_name)\\b",
2755+
"end": "\\)",
2756+
"beginCaptures": {
2757+
"1": {
2758+
"name": "keyword.language.dune"
2759+
}
2760+
},
2761+
"patterns": [
2762+
{
2763+
"include": "#general"
2764+
}
2765+
]
2766+
},
2767+
{
2768+
"comment": "type_description",
2769+
"begin": "\\([[:space:]]*(type_description)\\b",
2770+
"end": "\\)",
2771+
"beginCaptures": {
2772+
"1": {
2773+
"name": "keyword.language.dune"
2774+
}
2775+
},
2776+
"patterns": [
2777+
{
2778+
"comment": "type_description/instance",
2779+
"begin": "\\([[:space:]]*(instance)\\b",
2780+
"end": "\\)",
2781+
"beginCaptures": {
2782+
"1": {
2783+
"name": "keyword.language.dune"
2784+
}
2785+
},
2786+
"patterns": [
2787+
{
2788+
"include": "#general"
2789+
}
2790+
]
2791+
},
2792+
{
2793+
"comment": "type_description/functor",
2794+
"begin": "\\([[:space:]]*(functor)\\b",
2795+
"end": "\\)",
2796+
"beginCaptures": {
2797+
"1": {
2798+
"name": "keyword.language.dune"
2799+
}
2800+
},
2801+
"patterns": [
2802+
{
2803+
"include": "#general"
2804+
}
2805+
]
2806+
}
2807+
]
2808+
},
2809+
{
2810+
"comment": "function_description",
2811+
"begin": "\\([[:space:]]*(function_description)\\b",
2812+
"end": "\\)",
2813+
"beginCaptures": {
2814+
"1": {
2815+
"name": "keyword.language.dune"
2816+
}
2817+
},
2818+
"patterns": [
2819+
{
2820+
"comment": "function_description/instance",
2821+
"begin": "\\([[:space:]]*(instance)\\b",
2822+
"end": "\\)",
2823+
"beginCaptures": {
2824+
"1": {
2825+
"name": "keyword.language.dune"
2826+
}
2827+
},
2828+
"patterns": [
2829+
{
2830+
"include": "#general"
2831+
}
2832+
]
2833+
},
2834+
{
2835+
"comment": "function_description/functor",
2836+
"begin": "\\([[:space:]]*(functor)\\b",
2837+
"end": "\\)",
2838+
"beginCaptures": {
2839+
"1": {
2840+
"name": "keyword.language.dune"
2841+
}
2842+
},
2843+
"patterns": [
2844+
{
2845+
"include": "#general"
2846+
}
2847+
]
2848+
},
2849+
{
2850+
"comment": "function_description/concurrency",
2851+
"begin": "\\([[:space:]]*(concurrency)\\b",
2852+
"end": "\\)",
2853+
"beginCaptures": {
2854+
"1": {
2855+
"name": "keyword.language.dune"
2856+
}
2857+
},
2858+
"patterns": [
2859+
{
2860+
"match": "\\b(sequential|unlocked|lwt_jobs|lwt_preemptive)\\b",
2861+
"name": "variable.other.declaration.dune"
2862+
}
2863+
]
2864+
},
2865+
{
2866+
"comment": "function_description/errno_policy",
2867+
"begin": "\\([[:space:]]*(errno_policy)\\b",
2868+
"end": "\\)",
2869+
"beginCaptures": {
2870+
"1": {
2871+
"name": "keyword.language.dune"
2872+
}
2873+
},
2874+
"patterns": [
2875+
{
2876+
"match": "\\b(ignore_errno|return_errno)\\b",
2877+
"name": "variable.other.declaration.dune"
2878+
}
2879+
]
2880+
}
2881+
]
2882+
},
2883+
{
2884+
"comment": "build_flags_resolver",
2885+
"begin": "\\([[:space:]]*(build_flags_resolver)\\b",
2886+
"end": "\\)",
2887+
"beginCaptures": {
2888+
"1": {
2889+
"name": "keyword.language.dune"
2890+
}
2891+
},
2892+
"patterns": [
2893+
{
2894+
"comment": "pkg_config",
2895+
"match": "\\b(pkg_config)\\b",
2896+
"name": "variable.other.declaration.dune"
2897+
},
2898+
{
2899+
"comment": "vendored-field",
2900+
"begin": "\\([[:space:]]*(vendored)\\b",
2901+
"end": "\\)",
2902+
"beginCaptures": {
2903+
"1": {
2904+
"name": "keyword.language.dune"
2905+
}
2906+
},
2907+
"patterns": [
2908+
{
2909+
"comment": "c_flags/c_library_flags",
2910+
"begin": "\\([[:space:]]*(c_flags|c_library_flags)\\b",
2911+
"end": "\\)",
2912+
"beginCaptures": {
2913+
"1": {
2914+
"name": "keyword.language.dune"
2915+
}
2916+
},
2917+
"patterns": [
2918+
{
2919+
"include": "#general"
2920+
}
2921+
]
2922+
}
2923+
]
2924+
}
2925+
]
2926+
},
2927+
{
2928+
"comment": "generated_types",
2929+
"begin": "\\([[:space:]]*(generated_types)\\b",
2930+
"end": "\\)",
2931+
"beginCaptures": {
2932+
"1": {
2933+
"name": "keyword.language.dune"
2934+
}
2935+
}
2936+
},
2937+
{
2938+
"comment": "generated_entry_point",
2939+
"begin": "\\([[:space:]]*(generated_entry_point)\\b",
2940+
"end": "\\)",
2941+
"beginCaptures": {
2942+
"1": {
2943+
"name": "keyword.language.dune"
2944+
}
2945+
}
2946+
},
2947+
{
2948+
"comment": "headers",
2949+
"begin": "\\([[:space:]]*(headers)\\b",
2950+
"end": "\\)",
2951+
"beginCaptures": {
2952+
"1": {
2953+
"name": "keyword.language.dune"
2954+
}
2955+
},
2956+
"patterns": [
2957+
{
2958+
"comment": "include",
2959+
"begin": "\\([[:space:]]*(include)\\b",
2960+
"end": "\\)",
2961+
"beginCaptures": {
2962+
"1": {
2963+
"name": "keyword.language.dune"
2964+
}
2965+
},
2966+
"patterns": [
2967+
{
2968+
"include": "#general"
2969+
}
2970+
]
2971+
},
2972+
{
2973+
"comment": "preamble",
2974+
"begin": "\\([[:space:]]*(preamble)\\b",
2975+
"end": "\\)",
2976+
"beginCaptures": {
2977+
"1": {
2978+
"name": "keyword.language.dune"
2979+
}
2980+
},
2981+
"patterns": [
2982+
{
2983+
"include": "#general"
2984+
}
2985+
]
2986+
}
2987+
]
2988+
},
2989+
{
2990+
"comment": "deps",
2991+
"begin": "\\([[:space:]]*(deps)\\b",
2992+
"end": "\\)",
2993+
"beginCaptures": {
2994+
"1": {
2995+
"name": "keyword.language.dune"
2996+
}
2997+
},
2998+
"patterns": [
2999+
{
3000+
"include": "#dependencies"
3001+
},
3002+
{
3003+
"include": "#general"
3004+
}
3005+
]
3006+
},
3007+
{
3008+
"include": "#general"
3009+
}
3010+
]
3011+
}
3012+
]
3013+
},
27103014
"js_of_ocaml": {
27113015
"comment": "js_of_ocaml",
27123016
"begin": "\\([[:space:]]*(js_of_ocaml)\\b",

syntaxes/mlx.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@
6767
{ "include": "#comments" },
6868
{ "include": "#jsx-property-name" },
6969
{
70-
"begin": "=(\\s*)",
71-
"end": "(?=\\s|/?>)",
70+
"begin": "=([[:space:]]*)",
71+
"end": "(?=[[:space:]]|/?>)",
7272
"beginCaptures": {
7373
"0": { "name": "keyword.operator.ocaml" }
7474
},
@@ -88,7 +88,7 @@
8888
]
8989
},
9090
"jsx-property-name": {
91-
"match": "(?x)\n\\s*\n([_$[:alpha:]][-_$[:alnum:]]*)\n(?=\\s|=|/?>|/\\*|//)",
91+
"match": "(?x)\n[[:space:]]*\n([_$[:alpha:]][-_$[:alnum:]]*)\n(?=[[:space:]]|=|/?>|/\\*|//)",
9292
"captures": {
9393
"1": {
9494
"name": "entity.other.attribute-name.namespace.js"

0 commit comments

Comments
 (0)