Skip to content
4 changes: 4 additions & 0 deletions doc/kitty-scrollback.nvim_spec.txt
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,10 @@ M.paste_command() *kitty-scrollback.api.paste_command*
window contents to Kitty. Otherwise, no operation


*kitty-scrollback.api.remove_newline_paste_visual_command*
M.remove_newline_paste_visual_command()


*kitty-scrollback.api.paste_visual_command*
M.paste_visual_command()

Expand Down
5 changes: 5 additions & 0 deletions lua/kitty-scrollback/api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ M.paste_command = function()
end
end

M.remove_newline_paste_visual_command = function()
local visual_selection_lines = ksb_util.clear_yank_autocommand_and_get_visual_selection()
ksb_kitty_cmds.send_lines_to_kitty_and_quit({ table.concat(visual_selection_lines, '') }, false)
end

M.paste_visual_command = function()
local visual_selection_lines = ksb_util.clear_yank_autocommand_and_get_visual_selection()
ksb_kitty_cmds.send_lines_to_kitty_and_quit(visual_selection_lines, false)
Expand Down
8 changes: 7 additions & 1 deletion lua/kitty-scrollback/autocommands.lua
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,12 @@ M.set_yank_post_autocmd = function()
return
end

if yankevent.regname == '+' then
-- TODO: make 'z' register configurable
local remove_newline_register = 'z'
if yankevent.regname == '+' or yankevent.regname == remove_newline_register then
if yankevent.regname == remove_newline_register then
vim.fn.setreg('+', { table.concat(yankevent.regcontents, '') }, 'c')
end
if vim.fn.has('clipboard') > 0 then
-- Contents should be copied to clipboard, return to Kitty
local clipboard_tool = vim.api.nvim_call_function('provider#clipboard#Executable', {})
Expand All @@ -154,6 +159,7 @@ M.set_yank_post_autocmd = function()
-- see issue https://github.com/astrand/xclip/issues/38#ref-commit-b042f6d
defer_ms = 200
end

vim.defer_fn(function()
ksb_util.quitall()
end, defer_ms)
Expand Down
34 changes: 25 additions & 9 deletions lua/kitty-scrollback/keymaps.lua
Original file line number Diff line number Diff line change
Expand Up @@ -20,23 +20,32 @@ local function set_default(modes, lhs, rhs, keymap_opts)
end

local function set_global_defaults()
set_default({ 'v' }, '<leader>Y', plug.VISUAL_YANK_LINE, {})
set_default({ 'v' }, '<leader>y', plug.VISUAL_YANK, {})
set_default({ 'n' }, '<leader>Y', plug.NORMAL_YANK_END, {})
set_default({ 'n' }, '<leader>y', plug.NORMAL_YANK, {})
set_default({ 'n' }, '<leader>yy', plug.YANK_LINE, {})
set_default({ 'v' }, '<Leader>Y', plug.VISUAL_YANK_LINE, {})
set_default({ 'v' }, '<Leader>y', plug.VISUAL_YANK, {})
set_default({ 'n' }, '<Leader>Y', plug.NORMAL_YANK_END, {})
set_default({ 'n' }, '<Leader>y', plug.NORMAL_YANK, {})
set_default({ 'n' }, '<Leader>yy', plug.YANK_LINE, {})

set_default({ 'v' }, '<LocalLeader>Y', plug.REMOVE_NEWLINE_VISUAL_YANK_LINE, {}) -- TODO
set_default({ 'v' }, '<LocalLeader>y', plug.REMOVE_NEWLINE_VISUAL_YANK, {})
set_default({ 'n' }, '<LocalLeader>Y', plug.REMOVE_NEWLINE_NORMAL_YANK_END, {}) -- TODO
set_default({ 'n' }, '<LocalLeader>y', plug.REMOVE_NEWLINE_NORMAL_YANK, {}) -- TODO
set_default({ 'n' }, '<LocalLeader>yy', plug.REMOVE_NEWLINE_YANK_LINE, {}) -- TODO

set_default({ 'n' }, 'q', plug.CLOSE_OR_QUIT_ALL, {})
set_default({ 'n', 't', 'i' }, '<c-c>', plug.QUIT_ALL, {})

set_default({ 'v' }, '<c-cr>', plug.EXECUTE_VISUAL_CMD, {})
set_default({ 'v' }, '<s-cr>', plug.PASTE_VISUAL_CMD, {})
set_default({ 'v' }, '<C-CR>', plug.EXECUTE_VISUAL_CMD, {})
set_default({ 'v' }, '<S-CR>', plug.PASTE_VISUAL_CMD, {})

set_default({ 'v' }, '<LocalLeader><C-CR>', plug.REMOVE_NEWLINE_EXECUTE_VISUAL_CMD, {}) -- TODO
set_default({ 'v' }, '<LocalLeader><S-CR>', plug.REMOVE_NEWLINE_PASTE_VISUAL_CMD, {})
end

local function set_local_defaults()
set_default({ '' }, 'g?', plug.TOGGLE_FOOTER, {})
set_default({ 'n', 'i' }, '<c-cr>', plug.EXECUTE_CMD, {})
set_default({ 'n', 'i' }, '<s-cr>', plug.PASTE_CMD, {})
set_default({ 'n', 'i' }, '<C-CR>', plug.EXECUTE_CMD, {})
set_default({ 'n', 'i' }, '<S-CR>', plug.PASTE_CMD, {})
end

M.setup = function(private, options)
Expand All @@ -54,8 +63,15 @@ M.setup = function(private, options)

vim.keymap.set({ 'v' }, plug.YANK_LINE, '"+Y', {})
vim.keymap.set({ 'v' }, plug.VISUAL_YANK, '"+y', {})
vim.keymap.set({ 'v' }, plug.REMOVE_NEWLINE_VISUAL_YANK, '"zy', {})
vim.keymap.set({ 'v' }, plug.EXECUTE_VISUAL_CMD, ksb_api.execute_visual_command, {})
vim.keymap.set({ 'v' }, plug.PASTE_VISUAL_CMD, ksb_api.paste_visual_command, {})
vim.keymap.set(
{ 'v' },
plug.REMOVE_NEWLINE_PASTE_VISUAL_CMD,
ksb_api.remove_newline_paste_visual_command,
{}
)
vim.keymap.set({ 'n' }, plug.NORMAL_YANK_END, '"+y$', {})
vim.keymap.set({ 'n' }, plug.NORMAL_YANK, '"+y', {})
vim.keymap.set({ 'n' }, plug.YANK_LINE, '"+yy', {})
Expand Down
9 changes: 9 additions & 0 deletions lua/kitty-scrollback/util.lua
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,21 @@ M.plug_mapping_names = {
NORMAL_YANK = '<Plug>(KsbNormalYank)',
YANK_LINE = '<Plug>(KsbYankLine)',

REMOVE_NEWLINE_VISUAL_YANK_LINE = '<Plug>(KsbRemoveNewlineVisualYankLine)',
REMOVE_NEWLINE_VISUAL_YANK = '<Plug>(KsbRemoveNewlineVisualYank)',
REMOVE_NEWLINE_NORMAL_YANK_END = '<Plug>(KsbRemoveNewlineNormalYankEnd)',
REMOVE_NEWLINE_NORMAL_YANK = '<Plug>(KsbRemoveNewlineNormalYank)',
REMOVE_NEWLINE_YANK_LINE = '<Plug>(KsbRemoveNewlineYankLine)',

CLOSE_OR_QUIT_ALL = '<Plug>(KsbCloseOrQuitAll)',
QUIT_ALL = '<Plug>(KsbQuitAll)',

EXECUTE_VISUAL_CMD = '<Plug>(KsbExecuteVisualCmd)',
PASTE_VISUAL_CMD = '<Plug>(KsbPasteVisualCmd)',

REMOVE_NEWLINE_EXECUTE_VISUAL_CMD = '<Plug>(KsbRemoveNewlineExecuteVisualCmd)',
REMOVE_NEWLINE_PASTE_VISUAL_CMD = '<Plug>(KsbRemoveNewlinePasteVisualCmd)',

TOGGLE_FOOTER = '<Plug>(KsbToggleFooter)',
EXECUTE_CMD = '<Plug>(KsbExecuteCmd)',
PASTE_CMD = '<Plug>(KsbPasteCmd)',
Expand Down
Loading