mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 09:44:31 +00:00 
			
		
		
		
	There are 6 remaining 8.0.x patches, tracked in: https://github.com/neovim/neovim/issues/5431
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
--  Updates version.c list of applied Vim patches.
 | 
						|
--
 | 
						|
--  Usage:
 | 
						|
--    VIM_SOURCE_DIR=~/neovim/.vim-src/ nvim -V1 -es -i NONE +'luafile ./scripts/vimpatch.lua' +q
 | 
						|
 | 
						|
local nvim = vim.api
 | 
						|
 | 
						|
local function systemlist(...)
 | 
						|
  local rv = nvim.nvim_call_function('systemlist', ...)
 | 
						|
  local err = nvim.nvim_get_vvar('shell_error')
 | 
						|
  local args_str = nvim.nvim_call_function('string', ...)
 | 
						|
  if 0 ~= err then
 | 
						|
    error('command failed: '..args_str)
 | 
						|
  end
 | 
						|
  return rv
 | 
						|
end
 | 
						|
 | 
						|
local function vimpatch_sh_list_numbers()
 | 
						|
  return systemlist( { { 'bash', '-c', 'scripts/vim-patch.sh -M', } } )
 | 
						|
end
 | 
						|
 | 
						|
-- Generates the lines to be inserted into the src/version.c
 | 
						|
-- `included_patches[]` definition.
 | 
						|
local function gen_version_c_lines()
 | 
						|
  -- Set of merged Vim 8.1.zzzz patch numbers.
 | 
						|
  local merged_patch_numbers = {}
 | 
						|
  local highest = 0
 | 
						|
  for _, n in ipairs(vimpatch_sh_list_numbers()) do
 | 
						|
    n = tonumber(n)
 | 
						|
    if n then
 | 
						|
      merged_patch_numbers[n] = true
 | 
						|
      highest = math.max(highest, n)
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  local lines = {}
 | 
						|
  for i = highest, 0, -1 do
 | 
						|
    local is_merged = (nil ~= merged_patch_numbers[i])
 | 
						|
    if is_merged then
 | 
						|
      table.insert(lines, string.format('  %s,', i))
 | 
						|
    else
 | 
						|
      table.insert(lines, string.format('  // %s,', i))
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  return lines
 | 
						|
end
 | 
						|
 | 
						|
local function patch_version_c()
 | 
						|
  local lines = gen_version_c_lines()
 | 
						|
 | 
						|
  nvim.nvim_command('silent noswapfile noautocmd edit src/nvim/version.c')
 | 
						|
  nvim.nvim_command('/static const int included_patches')
 | 
						|
  -- Delete the existing lines.
 | 
						|
  nvim.nvim_command('silent normal! j0d/};\rk')
 | 
						|
  -- Insert the lines.
 | 
						|
  nvim.nvim_call_function('append', {
 | 
						|
      nvim.nvim_eval('line(".")'),
 | 
						|
      lines,
 | 
						|
    })
 | 
						|
  nvim.nvim_command('silent write')
 | 
						|
end
 | 
						|
 | 
						|
patch_version_c()
 |