summaryrefslogtreecommitdiff
path: root/docs/refman/generatorvim.py
diff options
context:
space:
mode:
authorLiam Beguin <liambeguin@gmail.com>2023-08-27 20:14:12 -0400
committerEli Schwartz <eschwartz93@gmail.com>2023-09-07 19:14:03 -0400
commitba1ba1f5b052ff3873045fc8e608cc58bab937b7 (patch)
tree9e123ed85292a34665925994cb6a616ece97315c /docs/refman/generatorvim.py
parentc663476075b18739066e727db9b4f0f4f882b9d1 (diff)
downloadmeson-ba1ba1f5b052ff3873045fc8e608cc58bab937b7.tar.gz
docs: refman: add vim syntax file generator
Signed-off-by: Liam Beguin <liambeguin@gmail.com>
Diffstat (limited to 'docs/refman/generatorvim.py')
-rw-r--r--docs/refman/generatorvim.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/docs/refman/generatorvim.py b/docs/refman/generatorvim.py
new file mode 100644
index 000000000..ea725740f
--- /dev/null
+++ b/docs/refman/generatorvim.py
@@ -0,0 +1,37 @@
+# SPDX-License-Identifer: Apache-2.0
+# Copyright 2023 The Meson development team
+from __future__ import annotations
+
+from pathlib import Path
+
+from .generatorbase import GeneratorBase
+from .model import ReferenceManual
+
+
+class GeneratorVim(GeneratorBase):
+ def __init__(self, manual: ReferenceManual, out_dir: Path) -> None:
+ super().__init__(manual)
+ self.out_dir = out_dir
+
+ def generate(self) -> None:
+ template_dir = Path(__file__).resolve().parent / 'templates'
+ outname = 'meson.vim'
+ template_name = f'{outname}.mustache'
+ template_file = template_dir / template_name
+
+ builtin_funcs = [f.name for f in self.sorted_and_filtered(self.functions)]
+ data = {
+ 'builtin_funcs': '\n \\ '.join(builtin_funcs)
+ }
+
+ # Import here, so that other generators don't also depend on it
+ import chevron
+ result = chevron.render(
+ template=template_file.read_text(encoding='utf-8'),
+ data=data,
+ warn=True,
+ )
+
+ self.out_dir.mkdir(parents=True, exist_ok=True)
+ out_file = self.out_dir / outname
+ out_file.write_text(result, encoding='utf-8')