Updated vim with puppet helpers
- follow puppet classes, opening in new tab - follow puppet templates, opening in new tab - created a testmode for puppet
This commit is contained in:
parent
2d6bcd9ff7
commit
d6140a9f15
@ -12,6 +12,7 @@ require('opts') -- Options
|
|||||||
require('keys') -- Keymaps
|
require('keys') -- Keymaps
|
||||||
require('auto') -- Automaps
|
require('auto') -- Automaps
|
||||||
require('plug') -- Plugins
|
require('plug') -- Plugins
|
||||||
|
require('func') -- Functions
|
||||||
|
|
||||||
-- nvim-tree
|
-- nvim-tree
|
||||||
require("nvim-tree").setup({
|
require("nvim-tree").setup({
|
||||||
@ -182,7 +183,7 @@ require("block").setup({
|
|||||||
percent = 1.1,
|
percent = 1.1,
|
||||||
depth = 4,
|
depth = 4,
|
||||||
colors = nil,
|
colors = nil,
|
||||||
automatic = true,
|
automatic = false,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- require("dracula").setup{
|
-- require("dracula").setup{
|
||||||
|
|||||||
10
.config/nvim/lua/func.lua
Normal file
10
.config/nvim/lua/func.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
-- FUNCTIONS --
|
||||||
|
|
||||||
|
-- puppet language functions
|
||||||
|
vim.cmd [[
|
||||||
|
augroup lang_puppet
|
||||||
|
autocmd!
|
||||||
|
autocmd FileType puppet luafile ~/.config/nvim/lua/func/puppet.lua
|
||||||
|
augroup END
|
||||||
|
]]
|
||||||
|
|
||||||
108
.config/nvim/lua/func/puppet.lua
Normal file
108
.config/nvim/lua/func/puppet.lua
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
-- puppet functions
|
||||||
|
--
|
||||||
|
--
|
||||||
|
|
||||||
|
-- enter testmode
|
||||||
|
vim.cmd([[
|
||||||
|
function! OpenPuppetTestMode()
|
||||||
|
echo "Test mode active."
|
||||||
|
echo "Keybindings:"
|
||||||
|
echo " v - puppet-validate"
|
||||||
|
echo " l - puppet-lint"
|
||||||
|
echo " q - quit test mode"
|
||||||
|
|
||||||
|
" Keybinding to run tests on the current buffer
|
||||||
|
nnoremap <buffer> v :!/usr/local/bin/puppet-validate %<CR>
|
||||||
|
nnoremap <buffer> l :!/usr/local/bin/puppet-lint %<CR>
|
||||||
|
|
||||||
|
" Keybinding to quit test mode
|
||||||
|
let keys_to_exit = ['q', ':', 'i', 'a', 'c', 'r', 'w', '<ESC>']
|
||||||
|
for key in keys_to_exit
|
||||||
|
execute "silent! nnoremap <buffer> " . key . " :call LeavePuppetTestMode()<CR>"
|
||||||
|
endfor
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! LeavePuppetTestMode()
|
||||||
|
" Unmap the keybindings we defined for test mode
|
||||||
|
let keys_to_exit = ['l', 'v', 'q', ':', 'i', 'a', 'c', 'r', 'w', '<ESC>']
|
||||||
|
for key in keys_to_exit
|
||||||
|
execute "silent! unmap <buffer> " . key
|
||||||
|
endfor
|
||||||
|
|
||||||
|
echo "Test Mode Exited!"
|
||||||
|
endfunction
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- follow links to classes
|
||||||
|
vim.cmd([[
|
||||||
|
function! OpenPuppetClass()
|
||||||
|
|
||||||
|
" Get the line under the cursor
|
||||||
|
let line = getline(".")
|
||||||
|
|
||||||
|
" Use a regex to find the full class name
|
||||||
|
let classname = tolower(matchstr(line, '\v\w+(\:\:\w+)+'))
|
||||||
|
|
||||||
|
" Initialize an empty variable for the directory
|
||||||
|
let dirpath = ""
|
||||||
|
|
||||||
|
" Check if the class name starts with 'profiles::' or 'roles::'
|
||||||
|
if classname =~ '^profiles::'
|
||||||
|
let dirpath = "site/profiles/manifests/"
|
||||||
|
let classname = substitute(classname, 'profiles::', '', '')
|
||||||
|
elseif classname =~ '^roles::'
|
||||||
|
let dirpath = "site/roles/manifests/"
|
||||||
|
let classname = substitute(classname, 'roles::', '', '')
|
||||||
|
else
|
||||||
|
echo "Unknown class prefix, should be profiles:: or roles::"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Replace :: with / to convert class name to file path
|
||||||
|
let filepath = substitute(classname, '::', '/', 'g')
|
||||||
|
|
||||||
|
" Create the full file path
|
||||||
|
let fullpath = dirpath . filepath . ".pp"
|
||||||
|
|
||||||
|
" Open the file in a new tab
|
||||||
|
execute "tabedit " . fullpath
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- follow links to templates
|
||||||
|
vim.cmd([[
|
||||||
|
function! OpenPuppetTemplate()
|
||||||
|
|
||||||
|
" Get the line under the cursor
|
||||||
|
let line = getline(".")
|
||||||
|
|
||||||
|
" Use regex to find the full template name
|
||||||
|
let template = matchstr(line, 'profiles\/.*\.erb')
|
||||||
|
|
||||||
|
" Initialize an empty variable for the new directory path
|
||||||
|
let newpath = ""
|
||||||
|
|
||||||
|
" Check if the template name starts with 'profiles/'
|
||||||
|
if template =~ '^profiles\/'
|
||||||
|
let newpath = substitute(template, '^profiles/', 'site/profiles/templates/', '')
|
||||||
|
else
|
||||||
|
echo "Unknown template prefix, should be profiles/, line is: " . template
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Create the full file path
|
||||||
|
let fullpath = newpath
|
||||||
|
|
||||||
|
" Open the file in a new tab
|
||||||
|
execute "tabedit " . fullpath
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
]])
|
||||||
|
|
||||||
|
-- keybindings
|
||||||
|
vim.cmd([[
|
||||||
|
nnoremap <Leader>g :call OpenPuppetClass()<CR>
|
||||||
|
nnoremap <Leader>h :call OpenPuppetTemplate()<CR>
|
||||||
|
nnoremap <Leader>t :call OpenPuppetTestMode()<CR>
|
||||||
|
]])
|
||||||
Loading…
Reference in New Issue
Block a user