summaryrefslogtreecommitdiff
path: root/lua/vim/userregs/impl/basename.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/vim/userregs/impl/basename.lua')
-rw-r--r--lua/vim/userregs/impl/basename.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/lua/vim/userregs/impl/basename.lua b/lua/vim/userregs/impl/basename.lua
new file mode 100644
index 0000000..a46a381
--- /dev/null
+++ b/lua/vim/userregs/impl/basename.lua
@@ -0,0 +1,28 @@
+--- Basename Register: returns the current filename without path and extension.
+---
+--- This is similar to the "%" register (full filename), but returns only
+--- the basename with one extension removed. Useful, for example, when referencing
+--- Java class names based on the file name.
+---
+--- This register is read-only and assigned to the character '$'.
+
+local userregs = require("vim.userregs")
+local api = vim.api
+
+---@type table<string, fun(regname: string): any>
+local handler = {}
+
+--- Return the current buffer's basename without extension.
+--- Equivalent to `expand('%:t:r')`
+function handler.put(regname)
+ return vim.fn.expand('%:t:r')
+end
+
+-- Make this register read-only by omitting the yank handler.
+handler.yank = nil
+
+-- Register this handler under the user register '$'.
+userregs.register_handler('$', handler)
+
+
+return {}