diff options
Diffstat (limited to 'lua/vim/userregs/impl/basename.lua')
-rw-r--r-- | lua/vim/userregs/impl/basename.lua | 28 |
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 {} |