Some checks failed
		
		
	
	Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
				
			Detach Plugins / check (GitHub.vim) (push) Has been cancelled
				
			Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
				
			Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
				
			Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
				
			Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
				
			Detach Plugins / check (git.vim) (push) Has been cancelled
				
			Detach Plugins / check (iedit.vim) (push) Has been cancelled
				
			Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
				
			Detach Plugins / check (vim-chat) (push) Has been cancelled
				
			Detach Plugins / check (vim-cheat) (push) Has been cancelled
				
			Detach Plugins / check (vim-todo) (push) Has been cancelled
				
			Detach Plugins / check (xmake.vim) (push) Has been cancelled
				
			test / Linux (nvim, nightly) (push) Has been cancelled
				
			test / Linux (nvim, v0.3.8) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.3) (push) Has been cancelled
				
			test / Linux (nvim, v0.4.4) (push) Has been cancelled
				
			test / Linux (nvim, v0.5.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.5.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.6.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.6.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.7.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.7.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.1) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.2) (push) Has been cancelled
				
			test / Linux (nvim, v0.8.3) (push) Has been cancelled
				
			test / Linux (nvim, v0.9.0) (push) Has been cancelled
				
			test / Linux (nvim, v0.9.1) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.052) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
				
			test / Linux (true, vim, v7.4.629) (push) Has been cancelled
				
			test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
				
			test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
				
			test / Linux (vim, nightly) (push) Has been cancelled
				
			test / Linux (vim, v8.0.0184) (push) Has been cancelled
				
			test / Linux (vim, v8.0.1453) (push) Has been cancelled
				
			test / Linux (vim, v8.1.2269) (push) Has been cancelled
				
			test / Linux (vim, v8.2.2434) (push) Has been cancelled
				
			test / Linux (vim, v8.2.3995) (push) Has been cancelled
				
			test / Windows (nvim, nightly) (push) Has been cancelled
				
			test / Windows (nvim, v0.3.8) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.3) (push) Has been cancelled
				
			test / Windows (nvim, v0.4.4) (push) Has been cancelled
				
			test / Windows (nvim, v0.5.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.5.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.6.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.6.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.7.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.7.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.1) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.2) (push) Has been cancelled
				
			test / Windows (nvim, v0.8.3) (push) Has been cancelled
				
			test / Windows (nvim, v0.9.0) (push) Has been cancelled
				
			test / Windows (nvim, v0.9.1) (push) Has been cancelled
				
			test / Windows (vim, nightly) (push) Has been cancelled
				
			test / Windows (vim, v7.4.1185) (push) Has been cancelled
				
			test / Windows (vim, v7.4.1689) (push) Has been cancelled
				
			test / Windows (vim, v8.0.0027) (push) Has been cancelled
				
			test / Windows (vim, v8.0.1453) (push) Has been cancelled
				
			test / Windows (vim, v8.1.2269) (push) Has been cancelled
				
			test / Windows (vim, v8.2.2434) (push) Has been cancelled
				
			test / Windows (vim, v8.2.3995) (push) Has been cancelled
				
			docker / docker (push) Has been cancelled
				
			mirror / check (coding) (push) Has been cancelled
				
			mirror / check (gitee) (push) Has been cancelled
				
			mirror / check (gitlab) (push) Has been cancelled
				
			
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
luavi = {}
 | 
						|
 | 
						|
local complete = require('luavi.complete')
 | 
						|
 | 
						|
function luavi.complete(findstart, base)
 | 
						|
    complete.complete(findstart, base)
 | 
						|
end
 | 
						|
 | 
						|
local function fold_iter(buf, fromline, toline)
 | 
						|
  assert(fromline == nil or type(fromline) == "number", "fromline must be a number if specified!")
 | 
						|
  buf = buf or vimutils.current_buffer()
 | 
						|
  toline = toline or #buf
 | 
						|
  assert(type(toline) == "number", "toline must be a number if specified!")
 | 
						|
 | 
						|
  local lineidx = fromline and (fromline - 1) or 0
 | 
						|
  -- to remember consecutive folds
 | 
						|
  local foldlist = {}
 | 
						|
  -- closure blocks opening/closing statements
 | 
						|
  local patterns = {{"do", "end"},
 | 
						|
                    {"repeat", "until%s+.+"},
 | 
						|
                    {"if%s+.+%s+then", "end"},
 | 
						|
                    {"for%s+.+%s+do", "end"},
 | 
						|
                    {"function.+", "end"},
 | 
						|
                    {"return%s+function.+", "end"},
 | 
						|
                    {"local%s+function%s+.+", "end"},
 | 
						|
                   }
 | 
						|
 | 
						|
  return function()
 | 
						|
    lineidx = lineidx + 1
 | 
						|
    if lineidx <= toline then
 | 
						|
      -- search for one of blocks statements
 | 
						|
      for i, t in ipairs(patterns) do
 | 
						|
        -- add whole line anchors
 | 
						|
        local tagopen = '^%s*' .. t[1] .. '%s*$'
 | 
						|
        local tagclose = '^%s*' .. t[2] .. '%s*$'
 | 
						|
        -- try to find opening statement
 | 
						|
        if string.find(buf[lineidx], tagopen) then
 | 
						|
          -- just remember it
 | 
						|
          table.insert(foldlist, t)
 | 
						|
        elseif string.find(buf[lineidx], tagclose) then     -- check for closing statement
 | 
						|
          -- Proceed only if there is unclosed block in foldlist and its
 | 
						|
          -- closing statement matches.
 | 
						|
          if #foldlist > 0 and string.find(buf[lineidx], foldlist[#foldlist][2]) then
 | 
						|
            table.remove(foldlist)
 | 
						|
            -- Add 1 to foldlist length (synonymous to fold level) to include
 | 
						|
            -- closing statement in the fold too.
 | 
						|
            return #foldlist + 1, lineidx, buf[lineidx]
 | 
						|
          else
 | 
						|
            -- An incorrect situation where opening/closing statements didn't
 | 
						|
            -- match (probably due to malformed formating or erroneous code).
 | 
						|
            -- Just "reset" foldlist.
 | 
						|
            foldlist = {}
 | 
						|
          end
 | 
						|
        end
 | 
						|
      end
 | 
						|
      -- #foldlist is fold level
 | 
						|
      return #foldlist, lineidx, buf[lineidx]
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
function luavi.fold(linenum)
 | 
						|
  assert(type(linenum) == "number", "linenum must be a number!")
 | 
						|
 | 
						|
  -- by default don't make nested folds
 | 
						|
  local innerfolds = false
 | 
						|
  -- though a configuration variable can enable it
 | 
						|
  if vimutils.eval('exists("b:lua_inner_folds")') == 1 then
 | 
						|
    innerfolds = vimutils.eval('b:lua_inner_folds') == 1
 | 
						|
  elseif vimutils.eval('exists("g:lua_inner_folds")') == 1 then
 | 
						|
    innerfolds = vimutils.eval('g:lua_inner_folds') == 1
 | 
						|
  end
 | 
						|
 | 
						|
  for lvl, lineidx in fold_iter() do
 | 
						|
    if lineidx == linenum then
 | 
						|
      vim.command("return " .. (innerfolds and lvl or (lvl > 1 and 1 or lvl)))
 | 
						|
      break
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
return luavi
 |