From bc4e9b795276117acea44c7c5175b92f6d9d2044 Mon Sep 17 00:00:00 2001
From: Oliver Davies <oliver@oliverdavies.uk>
Date: Thu, 17 Mar 2022 22:10:00 +0000
Subject: [PATCH] feat(nvim): make `req` work with dots

---
 .../files/lua/opdavies/snippets/ft/lua.lua    | 29 +++++++++++++------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/roles/neovim/files/lua/opdavies/snippets/ft/lua.lua b/roles/neovim/files/lua/opdavies/snippets/ft/lua.lua
index acdb3eba..c2abfba8 100644
--- a/roles/neovim/files/lua/opdavies/snippets/ft/lua.lua
+++ b/roles/neovim/files/lua/opdavies/snippets/ft/lua.lua
@@ -1,16 +1,27 @@
-local fmt = require("luasnip.extras.fmt").fmt
 local ls = require "luasnip"
+
+local fmt = require("luasnip.extras.fmt").fmt
 local rep = require("luasnip.extras").rep
 
-local i = ls.insert_node
+local f, i = ls.function_node, ls.insert_node
 
 return {
-  req = fmt("local {} = require('{}')", { i(1), rep(1) }),
+  pcall = fmt(
+    [[
+      local status_ok, {} = pcall(require, "{}")
+      if not status_ok then
+        return
+      end
+    ]],
+    { i(1), rep(1) }
+  ),
 
-  pcall = fmt([[
-    local status_ok, {} = pcall(require, "{}")
-    if not status_ok then
-      return
-    end
-  ]], { i(1), rep(1) })
+  req = fmt([[local {} = require "{}"]], {
+    f(function(import_name)
+      local parts = vim.split(import_name[1][1], ".", true)
+
+      return parts[#parts] or ""
+    end, { 1 }),
+    i(1),
+  }),
 }