diff --git a/runtime/ftplugin/jsonld.vim b/runtime/ftplugin/jsonld.vim new file mode 100644 index 0000000000..bb4dde21c2 --- /dev/null +++ b/runtime/ftplugin/jsonld.vim @@ -0,0 +1,10 @@ +" Vim filetype plugin +" Language: JSON-LD +" Maintainer: The Vim Project +" Last Change: 2026 Aug 06 + +if exists('b:did_ftplugin') + finish +endif + +runtime! ftplugin/json.vim diff --git a/runtime/indent/jsonld.vim b/runtime/indent/jsonld.vim new file mode 100644 index 0000000000..96b9b06146 --- /dev/null +++ b/runtime/indent/jsonld.vim @@ -0,0 +1,6 @@ +" Vim indent file +" Language: JSON-LD +" Maintainer: The Vim Project +" Last Change: 2026 Aug 06 + +runtime! indent/json.vim diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua index c3331d53c4..727c2b0601 100644 --- a/runtime/lua/vim/filetype.lua +++ b/runtime/lua/vim/filetype.lua @@ -725,6 +725,7 @@ local extension = { json5 = 'json5', jsonc = 'jsonc', jsonl = 'jsonl', + jsonld = 'jsonld', jsonnet = 'jsonnet', libsonnet = 'jsonnet', jsp = 'jsp', diff --git a/runtime/makemenu.vim b/runtime/makemenu.vim index d9f5d671bd..c74bba6d84 100644 --- a/runtime/makemenu.vim +++ b/runtime/makemenu.vim @@ -1,6 +1,6 @@ " Script to define the syntax menu in synmenu.vim " Maintainer: The Vim Project -" Last Change: 2026 Aug 03 +" Last Change: 2026 Aug 06 " Former Maintainer: Bram Moolenaar " This is used by "make menu" in the src directory. @@ -382,6 +382,7 @@ SynMenu HIJK.JJdescription:jjdescription SynMenu HIJK.Jovial:jovial SynMenu HIJK.JQ:jq SynMenu HIJK.JSON.JSON:json +SynMenu HIJK.JSON.JSON-LD:jsonld SynMenu HIJK.JSON.JSON5:json5 SynMenu HIJK.JSON.JSONC:jsonc SynMenu HIJK.Julia:julia diff --git a/runtime/synmenu.vim b/runtime/synmenu.vim index 7152eaf3ee..1f1a8bc25e 100644 --- a/runtime/synmenu.vim +++ b/runtime/synmenu.vim @@ -2,7 +2,7 @@ " This file is normally sourced from menu.vim. " " Maintainer: The Vim Project -" Last Change: 2025 Mar 09 +" Last Change: 2026 Aug 06 " Former Maintainer: Bram Moolenaar " Define the SetSyn function, used for the Syntax menu entries. @@ -369,20 +369,21 @@ an 50.50.780 &Syntax.HIJK.JJdescription :cal SetSyn("jjdescription") an 50.50.790 &Syntax.HIJK.Jovial :cal SetSyn("jovial") an 50.50.800 &Syntax.HIJK.JQ :cal SetSyn("jq") an 50.50.810 &Syntax.HIJK.JSON.JSON :cal SetSyn("json") -an 50.50.820 &Syntax.HIJK.JSON.JSON5 :cal SetSyn("json5") -an 50.50.830 &Syntax.HIJK.JSON.JSONC :cal SetSyn("jsonc") -an 50.50.840 &Syntax.HIJK.Julia :cal SetSyn("julia") -an 50.50.850 &Syntax.HIJK.Just :cal SetSyn("just") -an 50.50.870 &Syntax.HIJK.Karel :cal SetSyn("karel") -an 50.50.880 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig") -an 50.50.890 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript") -an 50.50.900 &Syntax.HIJK.Kdl :cal SetSyn("kdl") -an 50.50.910 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt") -an 50.50.920 &Syntax.HIJK.Kitty :cal SetSyn("kitty") -an 50.50.930 &Syntax.HIJK.Kivy :cal SetSyn("kivy") -an 50.50.940 &Syntax.HIJK.KixTart :cal SetSyn("kix") -an 50.50.950 &Syntax.HIJK.Kotlin :cal SetSyn("kotlin") -an 50.50.960 &Syntax.HIJK.Krl :cal SetSyn("krl") +an 50.50.820 &Syntax.HIJK.JSON.JSON-LD :cal SetSyn("jsonld") +an 50.50.830 &Syntax.HIJK.JSON.JSON5 :cal SetSyn("json5") +an 50.50.840 &Syntax.HIJK.JSON.JSONC :cal SetSyn("jsonc") +an 50.50.850 &Syntax.HIJK.Julia :cal SetSyn("julia") +an 50.50.860 &Syntax.HIJK.Just :cal SetSyn("just") +an 50.50.880 &Syntax.HIJK.Karel :cal SetSyn("karel") +an 50.50.890 &Syntax.HIJK.Kconfig :cal SetSyn("kconfig") +an 50.50.900 &Syntax.HIJK.KDE\ script :cal SetSyn("kscript") +an 50.50.910 &Syntax.HIJK.Kdl :cal SetSyn("kdl") +an 50.50.920 &Syntax.HIJK.Kimwitu++ :cal SetSyn("kwt") +an 50.50.930 &Syntax.HIJK.Kitty :cal SetSyn("kitty") +an 50.50.940 &Syntax.HIJK.Kivy :cal SetSyn("kivy") +an 50.50.950 &Syntax.HIJK.KixTart :cal SetSyn("kix") +an 50.50.960 &Syntax.HIJK.Kotlin :cal SetSyn("kotlin") +an 50.50.970 &Syntax.HIJK.Krl :cal SetSyn("krl") an 50.60.100 &Syntax.L.Lace :cal SetSyn("lace") an 50.60.110 &Syntax.L.LambdaProlog :cal SetSyn("lprolog") an 50.60.120 &Syntax.L.Latte :cal SetSyn("latte") diff --git a/runtime/syntax/jsonld.vim b/runtime/syntax/jsonld.vim new file mode 100644 index 0000000000..3b933b0ec2 --- /dev/null +++ b/runtime/syntax/jsonld.vim @@ -0,0 +1,31 @@ +" Vim syntax file +" Language: JSON-LD +" Maintainer: The Vim Project +" Last Change: 2026 Aug 06 +" Reference: https://www.w3.org/TR/json-ld11/ + +if !exists('main_syntax') + if exists('b:current_syntax') + finish + endif + let main_syntax = 'jsonld' +endif + +runtime! syntax/json.vim +unlet! b:current_syntax + +" Match reserved keywords only when they occupy a complete JSON string. The +" negative lookbehind excludes an escaped quote inside a longer string. +syn match jsonldKeyword /\C\%(\\"\)\@