summaryrefslogtreecommitdiffstats
path: root/runtime/indent
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2023-05-14 18:50:25 +0100
committerBram Moolenaar <Bram@vim.org>2023-05-14 18:50:25 +0100
commitb7398fe41c9e1e731d058105a34158871ee83e3f (patch)
treed1d20b18bffd1bc554fbe0212eee3643adacda54 /runtime/indent
parente5d91ba1de83949eb9357c0fb8cbd91e7e69be6f (diff)
Update runtime files
Diffstat (limited to 'runtime/indent')
-rw-r--r--runtime/indent/dts.vim63
-rw-r--r--runtime/indent/luau.vim14
-rw-r--r--runtime/indent/testdir/dts.in46
-rw-r--r--runtime/indent/testdir/dts.ok46
4 files changed, 169 insertions, 0 deletions
diff --git a/runtime/indent/dts.vim b/runtime/indent/dts.vim
new file mode 100644
index 0000000000..e87f8153c7
--- /dev/null
+++ b/runtime/indent/dts.vim
@@ -0,0 +1,63 @@
+" Vim indent file
+" Language: Device Tree
+" Maintainer: Roland Hieber, Pengutronix <rhi@pengutronix.de>
+"
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal autoindent
+setlocal nosmartindent
+setlocal indentkeys=o,O,0},0<>>,!<Ctrl-F>
+setlocal indentexpr=GetDTSIndent()
+setlocal nolisp
+
+let b:undo_indent = 'setl autoindent< smartindent< indentkeys< indentexpr< lisp<'
+
+function GetDTSIndent()
+ let sw = shiftwidth()
+ let lnum = v:lnum
+ let line = getline(lnum)
+ let prevline = getline(prevnonblank(lnum-1))
+ let prevind = indent(prevnonblank(lnum-1))
+
+ if prevnonblank(lnum-1) < 1
+ return 0
+ endif
+
+ " Don't indent header and preprocessor directives
+ if line =~ '^\s*\(/dts-\|#\(include\|define\|undef\|warn\(ing\)\?\|error\|if\(n\?def\)\?\|else\|elif\|endif\)\)'
+ return 0
+
+ " Don't indent /node and &label blocks
+ elseif line =~ '^\s*[/&].\+{\s*$'
+ return 0
+
+ " Indent to matching bracket or remove one shiftwidth if line begins with } or >
+ elseif line =~ '^\s*[}>]'
+ " set cursor to closing bracket on current line
+ let col = matchend(line, '^\s*[>}]')
+ call cursor(lnum, col)
+
+ " determine bracket type, {} or <>
+ let pair = strpart('{}<>', stridx('}>', line[col-1]) * 2, 2)
+
+ " find matching bracket pair
+ let pairline = searchpair(pair[0], '', pair[1], 'bW')
+
+ if pairline > 0
+ return indent(pairline)
+ else
+ return prevind - sw
+ endif
+
+ " else, add one level of indent if line ends in { or < or = or ,
+ elseif prevline =~ '[{<=,]$'
+ return prevind + sw
+
+ else
+ return prevind
+ endif
+
+endfunction
diff --git a/runtime/indent/luau.vim b/runtime/indent/luau.vim
new file mode 100644
index 0000000000..69893f7399
--- /dev/null
+++ b/runtime/indent/luau.vim
@@ -0,0 +1,14 @@
+" Vim filetype indent file
+" Language: Luau
+" Maintainer: None yet
+" Last Change: 2023 Apr 30
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+
+" Luau is a superset of Lua
+runtime! indent/lua.vim
+
+
diff --git a/runtime/indent/testdir/dts.in b/runtime/indent/testdir/dts.in
new file mode 100644
index 0000000000..64e56e9017
--- /dev/null
+++ b/runtime/indent/testdir/dts.in
@@ -0,0 +1,46 @@
+/* vim: set ft=dts noet sw=8 : */
+
+/* START_INDENT */
+/dts-v1/;
+#include <dt-bindings/pinctrl/pinctrl-imx6q.h>
+ #include "imx6qdl.dtsi"
+#include "imx6qdl-someboard.dtsi"
+
+ /delete-node/ &{/memory@10000000};
+
+ / {
+compatible = "some,board";
+/delete-node/ memory;
+
+ chosen {
+environment = &{usdhc4/partitions/partition@0};
+};
+}
+
+ &iomuxc {
+pinctrl-names = "default";
+pinctrl-0 = <&pinctrl_hog>;
+
+pinctrl_gpiohog: gpiohoggrp {
+fsl,pins = <
+MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x130b0
+MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x130b0
+>;
+};
+}
+
+&usdhc4 {
+partitions {
+compatible = "fixed-partitions";
+
+partition@0 {
+label = "environment";
+reg = <0x0 0xe0000>;
+};
+};
+};
+
+&{/aliases} {
+usb0 = &usb;
+};
+/* END_INDENT */
diff --git a/runtime/indent/testdir/dts.ok b/runtime/indent/testdir/dts.ok
new file mode 100644
index 0000000000..d249766fd4
--- /dev/null
+++ b/runtime/indent/testdir/dts.ok
@@ -0,0 +1,46 @@
+/* vim: set ft=dts noet sw=8 : */
+
+/* START_INDENT */
+/dts-v1/;
+#include <dt-bindings/pinctrl/pinctrl-imx6q.h>
+#include "imx6qdl.dtsi"
+#include "imx6qdl-someboard.dtsi"
+
+/delete-node/ &{/memory@10000000};
+
+/ {
+ compatible = "some,board";
+ /delete-node/ memory;
+
+ chosen {
+ environment = &{usdhc4/partitions/partition@0};
+ };
+}
+
+&iomuxc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_hog>;
+
+ pinctrl_gpiohog: gpiohoggrp {
+ fsl,pins = <
+ MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x130b0
+ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x130b0
+ >;
+ };
+}
+
+&usdhc4 {
+ partitions {
+ compatible = "fixed-partitions";
+
+ partition@0 {
+ label = "environment";
+ reg = <0x0 0xe0000>;
+ };
+ };
+};
+
+&{/aliases} {
+ usb0 = &usb;
+};
+/* END_INDENT */