История изменений
Исправление 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%. Одно нажатие - установить метку, двойное - снести все. Сохраняется положение меток при удалении строк. Давно страдал без этого
Спасибо за наводку