LINUX.ORG.RU

История изменений

Исправление kvpfs_2, (текущая версия) :

Получилось вот что:
init.lua

vim.api.nvim_set_hl(0, 'MyFieldMark', {fg='black', bg='orange'})
vim.api.nvim_call_function('sign_define', {'my_field_mark',
      {numhl='MyFieldMark'}})
visual_mark_counter = 1
function visual_mark()
   local row, col = unpack(vim.api.nvim_win_get_cursor(0))
   local cur_buf = vim.api.nvim_get_current_buf()
   local buf_name = vim.api.nvim_buf_get_name(0)
   local ln_signs = vim.api.nvim_call_function('sign_getplaced',
         {cur_buf, {lnum=row, group='my_mark_group'}})
   if next(ln_signs[1].signs) == nil then
      vim.api.nvim_call_function('sign_place', {visual_mark_counter,
            'my_mark_group', 'my_field_mark', '', {lnum=row}})
      visual_mark_counter = visual_mark_counter + 1
   else
      vim.api.nvim_call_function('sign_unplace', {'my_mark_group',
            {id=ln_signs[1].signs[1].id, buffer=buf_name}})
   end
end
function visual_mark_delall()
   local buf_name = vim.api.nvim_buf_get_name(0)
   vim.api.nvim_call_function('sign_unplace',
         {'my_mark_group', {buffer=buf_name}})
end

vim.keymap.set('n', '<leader>m', visual_mark)
vim.keymap.set('n', '<leader>mm', visual_mark_delall)

Пришлось повозиться, но результат достойный, доволен на 100%. Одно нажатие - установить/удалить метку, двойное - снести все. Сохраняется положение меток при удалении строк. Давно страдал без этого

Спасибо за наводку

Исправление kvpfs_2, :

Получилось вот что:
init.lua

vim.api.nvim_set_hl(0, 'MyFieldMark', {fg='black', bg='orange'})
vim.api.nvim_call_function('sign_define', {'my_field_mark',
      {numhl='MyFieldMark'}})
visual_mark_counter = 1
function visual_mark()
   local row, col = unpack(vim.api.nvim_win_get_cursor(0))
   local cur_buf = vim.api.nvim_get_current_buf()
   local buf_name = vim.api.nvim_buf_get_name(0)
   local ln_signs = vim.api.nvim_call_function('sign_getplaced',
         {cur_buf, {lnum=row, group='my_mark_group'}})
   if next(ln_signs[1].signs) == nil then
      print("empty")
      vim.api.nvim_call_function('sign_place', {visual_mark_counter,
            'my_mark_group', 'my_field_mark', '', {lnum=row}})
      visual_mark_counter = visual_mark_counter + 1
   else
      vim.api.nvim_call_function('sign_unplace', {'my_mark_group',
            {id=ln_signs[1].signs[1].id, buffer=buf_name}})
   end
end
function visual_mark_delall()
   local buf_name = vim.api.nvim_buf_get_name(0)
   vim.api.nvim_call_function('sign_unplace',
         {'my_mark_group', {buffer=buf_name}})
end

vim.keymap.set('n', '<leader>m', visual_mark)
vim.keymap.set('n', '<leader>mm', visual_mark_delall)

Пришлось повозиться, но результат достойный, доволен на 100%. Одно нажатие - установить/удалить метку, двойное - снести все. Сохраняется положение меток при удалении строк. Давно страдал без этого

Спасибо за наводку

Исходная версия kvpfs_2, :

Получилось вот что:
init.lua

vim.api.nvim_set_hl(0, 'MyFieldMark', {fg='black', bg='orange'})
vim.api.nvim_call_function('sign_define', {'my_field_mark',
      {numhl='MyFieldMark'}})
visual_mark_counter = 1
function visual_mark()
   local row, col = unpack(vim.api.nvim_win_get_cursor(0))
   local cur_buf = vim.api.nvim_get_current_buf()
   local buf_name = vim.api.nvim_buf_get_name(0)
   local ln_signs = vim.api.nvim_call_function('sign_getplaced',
         {cur_buf, {lnum=row, group='my_mark_group'}})
   if next(ln_signs[1].signs) == nil then
      print("empty")
      vim.api.nvim_call_function('sign_place', {visual_mark_counter,
            'my_mark_group', 'my_field_mark', '', {lnum=row}})
      visual_mark_counter = visual_mark_counter + 1
   else
      vim.api.nvim_call_function('sign_unplace', {'my_mark_group',
            {id=ln_signs[1].signs[1].id, buffer=buf_name}})
   end
end
function visual_mark_delall()
   local buf_name = vim.api.nvim_buf_get_name(0)
   vim.api.nvim_call_function('sign_unplace',
         {'my_mark_group', {buffer=buf_name}})
end

vim.keymap.set('n', '<leader>m', visual_mark)
vim.keymap.set('n', '<leader>mm', visual_mark_delall)

Пришлось повозиться, но результат достойный, доволен на 100%. Одно нажатие - установить метку, двойное - снести все. Сохраняется положение меток при удалении строк. Давно страдал без этого

Спасибо за наводку