Initial commit
This commit is contained in:
commit
4f881c4f64
2 changed files with 53 additions and 0 deletions
33
lua/fold_if_err_nil.lua
Normal file
33
lua/fold_if_err_nil.lua
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
-- Neovim lua api doesn't support multiline regexes so we use this hack instead
|
||||||
|
regexStrs = {
|
||||||
|
"^\\s*if err != nil {\\s*$",
|
||||||
|
"^\\s*return.\\{-}.err.*$",
|
||||||
|
"^\\s*}\\s*$"
|
||||||
|
}
|
||||||
|
|
||||||
|
regexes = {}
|
||||||
|
for _,str in pairs(regexStrs) do
|
||||||
|
table.insert(regexes, vim.regex(str))
|
||||||
|
end
|
||||||
|
function foldIfErrNills() do
|
||||||
|
local line_count = vim.api.nvim_buf_line_count(0)
|
||||||
|
for i = 0,(line_count-#regexStrs) do
|
||||||
|
local allMatched = true
|
||||||
|
for j,regex in pairs(regexes) do
|
||||||
|
if not regex:match_line(0,i+j-1) then
|
||||||
|
allMatched = false
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if allMatched then
|
||||||
|
range_start = i+1
|
||||||
|
range_end = i+#regexes
|
||||||
|
vim.cmd(range_start..","..range_end.."fo")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
foldIfErrNills = foldIfErrNills
|
||||||
|
}
|
20
plugin/gofoldiferrnil.vim
Normal file
20
plugin/gofoldiferrnil.vim
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
" A small plugin to fold if err nil statements that do nothing except for
|
||||||
|
" propagating errors
|
||||||
|
" License: Unlicense
|
||||||
|
|
||||||
|
if exists('g:loaded_gofoldiferrnil') | finish | endif " prevent loading file twice
|
||||||
|
|
||||||
|
if !has('nvim-0.5')
|
||||||
|
echoerr 'You need neovim 0.5 or newer to run this plugin'
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:save_cpo = &cpo
|
||||||
|
set cpo&vim
|
||||||
|
|
||||||
|
command! GoFoldIfErr lua require('fold_if_err_nil').foldIfErrNills()
|
||||||
|
|
||||||
|
let &cpo = s:save_cpo
|
||||||
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
let g:loaded_whid = 1
|
Loading…
Reference in a new issue