about summary refs log tree commit diff stats
path: root/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-05-04 21:54:07 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-05-04 21:54:07 +0200
commitee174d9de0d926572acaaeca781b40e826ec4bcb (patch)
treed880b7e33bd44c4dc26ea1f8c53dc98b68f73d1e /modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua
parentmodules/nvim/plgs/luasnip/snippets: Simplify and add spdx-snippets (diff)
downloadnixos-config-ee174d9de0d926572acaaeca781b40e826ec4bcb.zip
modules/nvim/plgs/luasnip: Remove useless `./lua` directory
Diffstat (limited to 'modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua')
-rw-r--r--modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua41
1 files changed, 41 insertions, 0 deletions
diff --git a/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua b/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua
new file mode 100644
index 00000000..bcd128f7
--- /dev/null
+++ b/modules/by-name/nv/nvim/plgs/luasnip/snippets/tex/delimiter.lua
@@ -0,0 +1,41 @@
+-- nixos-config - My current NixOS configuration
+--
+-- Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+-- SPDX-License-Identifier: GPL-3.0-or-later
+--
+-- This file is part of my nixos-config.
+--
+-- You should have received a copy of the License along with this program.
+-- If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+local ls = require("luasnip")
+local fmt = require("luasnip.extras.fmt").fmt
+
+local get_visual = function(_, parent)
+  if #parent.snippet.env.SELECT_RAW > 0 then
+    return ls.snippet_node(nil, ls.insert_node(1, parent.snippet.env.SELECT_RAW))
+  else
+    return ls.snippet_node(nil, ls.insert_node(1, ""))
+  end
+end
+
+local translation_table = { ["("] = ")"; ["{"] = "}"; ["["] = "]"; }
+
+-- Return snippet tables
+return {
+  -- LEFT/RIGHT ALL BRACES
+  ls.snippet(
+    {
+      trig = "([^%a])l([%(%[%{])";
+      regTrig = true;
+      wordTrig = false;
+      snippetType = "autosnippet";
+    },
+    fmt("{}\\left{}{}\\right{}", {
+      ls.function_node(function(_, snip) return snip.captures[1] end);
+      ls.function_node(function(_, snip) return snip.captures[2] end);
+      ls.dynamic_node(1, get_visual);
+      ls.function_node(function(_, snip) return translation_table[snip.captures[2]] end);
+    })
+  );
+}