From 9c738cb718fc000acee1580edac09771953a1a55 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Fri, 7 Aug 2026 12:35:20 +0800 Subject: [PATCH] vim-patch:9.2.0920: filetype: json-ld files are not recognized Problem: filetype: json-ld files are not recognized Solution: Detect *.jsonld files as jsonld filetype, include filetype, indent and syntax plugins (Bogdan Barbu). Reference: https://www.w3.org/TR/json-ld11/ closes: vim/vim#20954 https://github.com/vim/vim/commit/a1e2198a2ca8bbddcad69ade8629f371bcb4cf1f Co-authored-by: Bogdan Barbu --- runtime/ftplugin/jsonld.vim | 10 ++++++++++ runtime/indent/jsonld.vim | 6 ++++++ runtime/lua/vim/filetype.lua | 1 + runtime/makemenu.vim | 3 ++- runtime/synmenu.vim | 31 +++++++++++++++--------------- runtime/syntax/jsonld.vim | 31 ++++++++++++++++++++++++++++++ test/old/testdir/test_filetype.vim | 1 + 7 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 runtime/ftplugin/jsonld.vim create mode 100644 runtime/indent/jsonld.vim create mode 100644 runtime/syntax/jsonld.vim 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\%(\\"\)\@