From a852f2d5d29140fe4f22d0735a74edbcb92136b6 Mon Sep 17 00:00:00 2001 From: Mike <10135646+mikesmithgh@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:20:24 -0500 Subject: [PATCH 1/8] chore: replace add-cursor with add-wrap-markers (#156) --- lua/kitty-scrollback/health.lua | 11 +++++------ lua/kitty-scrollback/kitty_commands.lua | 15 +++------------ lua/kitty-scrollback/launch.lua | 6 ++++-- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/lua/kitty-scrollback/health.lua b/lua/kitty-scrollback/health.lua index d7e1d064..7ec1f6eb 100644 --- a/lua/kitty-scrollback/health.lua +++ b/lua/kitty-scrollback/health.lua @@ -104,17 +104,16 @@ local function check_sed() return end - local esc = vim.fn.eval([["\e"]]) local cmd = { 'sed', '-E', '-e', - 's/$/' .. esc .. '[0m/g', + [[s/\r//g]], '-e', - 's/' .. esc .. '\\[\\?25.' .. esc .. '\\[.*;.*H' .. esc .. '\\[.*//g', + [[s/$/\x1b[0m/g]], } local ok, sed_proc = pcall(vim.system, cmd, { - stdin = 'expected' .. esc .. '[?25h' .. esc .. '[1;1H' .. esc .. '[notexpected', + stdin = 'expected\r', }) local result = {} if ok then @@ -124,7 +123,7 @@ local function check_sed() result.stdout = '' result.stderr = sed_proc end - ok = ok and result.code == 0 and result.stdout == 'expected' + ok = ok and result.code == 0 and result.stdout == 'expected\x1b[0m' if ok then vim.health.ok( '`' @@ -150,7 +149,7 @@ local function check_sed() .. result.code .. '* and stdout `' .. result.stdout - .. '` (should be `expected`)\n' + .. '` (should be `expected\x1b[0m`)\n' .. result_err .. '`\n' .. ' `sed: ' diff --git a/lua/kitty-scrollback/kitty_commands.lua b/lua/kitty-scrollback/kitty_commands.lua index e59b4201..b6841758 100644 --- a/lua/kitty-scrollback/kitty_commands.lua +++ b/lua/kitty-scrollback/kitty_commands.lua @@ -127,24 +127,15 @@ M.get_text_term = function(kitty_data, get_text_opts, on_exit_cb) kitty_data.window_id, get_text_opts ) - local sed_cmd = string.format( - [[sed -E ]] - .. [[-e 's/%s\[\?25.%s\[.*;.*H%s\[.*//g' ]] -- remove control sequence added by --add-cursor flag - .. [[-e 's/$/%s[0m/g' ]], -- append all lines with reset to avoid unintended colors - esc, - esc, - esc, - esc - ) + local sed_cmd = [[sed -E ]] + .. [[-e 's/\r//g' ]] -- added to remove /r added by --add-wrap-markers, (--add-wrap-markers is used to add empty lines at end of screen) + .. [[-e 's/$/\x1b[0m/g']] -- append all lines with reset to avoid unintended colors local flush_stdout_cmd = p.kitty_data.kitty_path .. [[ +runpy 'sys.stdout.flush()']] -- start to set title but do not complete see https://github.com/kovidgoyal/kitty/issues/719#issuecomment-952039731 local start_set_title_cmd = string.format([[printf '%s]2;']], esc) local full_cmd = kitty_get_text_cmd .. ' | ' .. sed_cmd - -- TODO: find scenario where I needed sed and possibly remove? - -- - reproduced on v1.0.0 but can't repro on this with: bat --no-pager ~/.bashrc; printf "before \x1b[1;1H after\n" - -- - may not need, but need to write tests first .. ' && ' .. flush_stdout_cmd .. ' && ' diff --git a/lua/kitty-scrollback/launch.lua b/lua/kitty-scrollback/launch.lua index 4f2b07f3..64efd9ee 100644 --- a/lua/kitty-scrollback/launch.lua +++ b/lua/kitty-scrollback/launch.lua @@ -401,9 +401,11 @@ M.launch = function() extent = '--extent=' .. extent_opt end - local add_cursor = '--add-cursor' -- always add cursor + -- always add wrap markers, wrap markers are important to add blank lines with /r to + -- fill the screen when setting the cursor position + local add_wrap_markers = '--add-wrap-markers' - local get_text_opts = ansi .. ' ' .. clear_selection .. ' ' .. add_cursor .. ' ' .. extent + local get_text_opts = ansi .. ' ' .. clear_selection .. ' ' .. add_wrap_markers .. ' ' .. extent -- increase the number of columns temporary so that the width is used during the -- terminal command kitty @ get-text. this avoids hard wrapping lines to the From 00a0b5f97030687a4fb6b454499f5ce55eb52144 Mon Sep 17 00:00:00 2001 From: Mike <10135646+mikesmithgh@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:07:12 -0500 Subject: [PATCH 2/8] fix: prevent caught deadly signal message on exit (#155) closes #135 --- doc/kitty-scrollback.nvim_spec.txt | 2 +- lua/kitty-scrollback/api.lua | 6 ++---- lua/kitty-scrollback/autocommands.lua | 14 +++++++++++--- lua/kitty-scrollback/kitty_commands.lua | 17 ++--------------- lua/kitty-scrollback/launch.lua | 4 ++-- lua/kitty-scrollback/util.lua | 4 ++++ .../kitty_scrollback_demo_spec.lua | 9 +++------ 7 files changed, 25 insertions(+), 31 deletions(-) diff --git a/doc/kitty-scrollback.nvim_spec.txt b/doc/kitty-scrollback.nvim_spec.txt index 0adbea22..25630355 100644 --- a/doc/kitty-scrollback.nvim_spec.txt +++ b/doc/kitty-scrollback.nvim_spec.txt @@ -156,7 +156,7 @@ M.setup() *kitty-scrollback.api.setup* M.quit_all() *kitty-scrollback.api.quit_all* - Attempt to gracefully quit Neovim. How do you exit vim? Why would you exit vim? + Attempt to force quit Neovim. How do you exit vim? Why would you exit vim? M.close_or_quit_all() *kitty-scrollback.api.close_or_quit_all* diff --git a/lua/kitty-scrollback/api.lua b/lua/kitty-scrollback/api.lua index 23255f6b..b804e0fc 100644 --- a/lua/kitty-scrollback/api.lua +++ b/lua/kitty-scrollback/api.lua @@ -16,11 +16,9 @@ M.setup = function(private, options) opts = options ---@diagnostic disable-line: unused-local end ----Attempt to gracefully quit Neovim. How do you exit vim? Why would you exit vim? +---Attempt to force quit Neovim. How do you exit vim? Why would you exit vim? M.quit_all = function() - -- quit causes nvim to exit early sometime interrupting underlying copy child process (.e.g, xclip) - -- send sigterm to gracefully terminate - vim.schedule(ksb_kitty_cmds.signal_term_to_kitty_child_process) + ksb_util.quitall() end ---If the current buffer is the paste buffer, then close the window diff --git a/lua/kitty-scrollback/autocommands.lua b/lua/kitty-scrollback/autocommands.lua index f54bd074..0b49c0c1 100644 --- a/lua/kitty-scrollback/autocommands.lua +++ b/lua/kitty-scrollback/autocommands.lua @@ -124,8 +124,16 @@ M.set_yank_post_autocmd = function() if yankevent.regname == '+' then if vim.fn.has('clipboard') > 0 then - -- contents are copied to clipboard, return to kitty - ksb_api.quit_all() + -- Contents are copied to clipboard, return to kitty + -- Previously Kitty was used to quit nvim by sending a SIGTERM signal avoid exiting nvim early. + -- The xclip child process was not spawning quick enough in the TextYankPost autocommand, resulting + -- in content not being copied to the clipboard. This was observed running Ubuntu on UTM. + -- The side effect of this is that the message Vim: Caught deadly signal 'SIGTERM' would briefly + -- flash before exiting kitty-scrollback.nvim. To avoid the deadly signal message and provide time + -- for xclip to start, defer calling quitall by 100 ms + vim.defer_fn(function() + vim.cmd.quitall({ bang = true }) + end, 100) else vim.schedule(function() local prompt_msg = @@ -147,7 +155,7 @@ M.set_yank_post_autocmd = function() ksb_util.restore_and_redraw() local response = vim.fn.confirm(prompt_msg, '&Quit\n&Continue') if response ~= 2 then - ksb_api.quit_all() + ksb_util.quitall() end end) end diff --git a/lua/kitty-scrollback/kitty_commands.lua b/lua/kitty-scrollback/kitty_commands.lua index b6841758..58b5bab6 100644 --- a/lua/kitty-scrollback/kitty_commands.lua +++ b/lua/kitty-scrollback/kitty_commands.lua @@ -96,7 +96,7 @@ local display_error = function(cmd, r) ksb_util.restore_and_redraw() local response = vim.fn.confirm(prompt_msg, '&Quit\n&Continue') if response ~= 2 then - M.signal_term_to_kitty_child_process(true) + ksb_util.quitall() end end @@ -246,7 +246,7 @@ M.send_lines_to_kitty_and_quit = function(lines, execute_command) '--match=id:' .. p.kitty_data.window_id, cmd_str, }) - M.signal_term_to_kitty_child_process() + ksb_util.quitall() end M.send_paste_buffer_text_to_kitty_and_quit = function(execute_command) @@ -285,19 +285,6 @@ M.signal_winchanged_to_kitty_child_process = function() }) end -M.signal_term_to_kitty_child_process = function(force) - if force then - vim.cmd.quitall({ bang = true }) - else - system_handle_error({ - p.kitty_data.kitty_path, - '@', - 'signal-child', - 'SIGTERM', - }) - end -end - M.open_kitty_loading_window = function(env) if p.kitty_loading_winid then M.close_kitty_loading_window(true) diff --git a/lua/kitty-scrollback/launch.lua b/lua/kitty-scrollback/launch.lua index 64efd9ee..e2aba80d 100644 --- a/lua/kitty-scrollback/launch.lua +++ b/lua/kitty-scrollback/launch.lua @@ -332,7 +332,7 @@ M.setup = function(kitty_data_str) .. table.concat(ksb_health.advice().nvim_version) local response = vim.fn.confirm(prompt_msg, '&Quit\n&Continue') if response ~= 2 then - ksb_kitty_cmds.signal_term_to_kitty_child_process(true) + ksb_util.quitall() end end if not ksb_health.check_kitty_version(true) then @@ -342,7 +342,7 @@ M.setup = function(kitty_data_str) .. table.concat(ksb_health.advice().kitty_version) local response = vim.fn.confirm(prompt_msg, '&Quit\n&Continue') if response ~= 2 then - ksb_kitty_cmds.signal_term_to_kitty_child_process(true) + ksb_util.quitall() end end diff --git a/lua/kitty-scrollback/util.lua b/lua/kitty-scrollback/util.lua index 73c22ef2..2dd5939f 100644 --- a/lua/kitty-scrollback/util.lua +++ b/lua/kitty-scrollback/util.lua @@ -77,4 +77,8 @@ M.clear_yank_autocommand_and_get_visual_selection = function() return reginfo.regcontents end +M.quitall = function() + vim.cmd.quitall({ bang = true }) +end + return M diff --git a/tests/kitty-scrollback/kitty_scrollback_demo_spec.lua b/tests/kitty-scrollback/kitty_scrollback_demo_spec.lua index b3168712..16f49c94 100644 --- a/tests/kitty-scrollback/kitty_scrollback_demo_spec.lua +++ b/tests/kitty-scrollback/kitty_scrollback_demo_spec.lua @@ -178,11 +178,6 @@ $ it('should_copy_visual_selection_to_clipboard', function() local paste = function() - -- TODO(#135): github runner has issues accessing the clipboard - -- just hardcode it for now since this test is for primarily for demo purposes anyway - if h.is_github_action then - return 'README.md' - end return vim.fn.getreg('+') end h.feed_kitty({ @@ -194,7 +189,9 @@ $ }, 0) h.assert_screen_equals( h.feed_kitty({ - h.send_without_newline([[printf "\n kitty-scrollback.nvim copied \e[35m]]), + h.with_pause_seconds_before( + h.send_without_newline([[printf "\n kitty-scrollback.nvim copied \e[35m]]) + ), h.with_pause_seconds_before(h.send_without_newline(h.send_as_string(paste())), 1), h.with_pause_seconds_before([[\e[0m to clipboard\n\n"]], 1), }), From 1b6c841bc14604b687da924bb5b6e6e8c699e111 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 9 Jan 2024 17:07:39 +0000 Subject: [PATCH 3/8] chore(release): 3.1.4 ## [3.1.4](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.3...v3.1.4) (2024-01-09) ### Bug Fixes * prevent caught deadly signal message on exit ([#155](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/155)) ([00a0b5f](https://github.com/mikesmithgh/kitty-scrollback.nvim/commit/00a0b5f97030687a4fb6b454499f5ce55eb52144)), closes [#135](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/135) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb336811..342e8875 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.1.4](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.3...v3.1.4) (2024-01-09) + + +### Bug Fixes + +* prevent caught deadly signal message on exit ([#155](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/155)) ([00a0b5f](https://github.com/mikesmithgh/kitty-scrollback.nvim/commit/00a0b5f97030687a4fb6b454499f5ce55eb52144)), closes [#135](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/135) + ## [3.1.3](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.2...v3.1.3) (2024-01-03) From 088b3fcf04e4882dbd2f08822eb33dae2c33b1a2 Mon Sep 17 00:00:00 2001 From: Mike <10135646+mikesmithgh@users.noreply.github.com> Date: Tue, 9 Jan 2024 20:46:38 -0500 Subject: [PATCH 4/8] fix: prefer xsel over xclip (#157) --- .github/workflows/tests.yml | 2 +- lua/kitty-scrollback/autocommands.lua | 20 +++++++++--------- lua/kitty-scrollback/health.lua | 29 +++++++++++++++++++-------- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 32f4449e..92238242 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -68,7 +68,7 @@ jobs: - name: Install dependencies run: | sudo apt update - sudo apt install -y xfce4 libxcb-xkb1 xclip + sudo apt install -y xfce4 libxcb-xkb1 xsel # homebrew is not used but is required to reproduce an issue for a test case /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" diff --git a/lua/kitty-scrollback/autocommands.lua b/lua/kitty-scrollback/autocommands.lua index 0b49c0c1..e7b38309 100644 --- a/lua/kitty-scrollback/autocommands.lua +++ b/lua/kitty-scrollback/autocommands.lua @@ -124,16 +124,18 @@ M.set_yank_post_autocmd = function() if yankevent.regname == '+' then if vim.fn.has('clipboard') > 0 then - -- Contents are copied to clipboard, return to kitty - -- Previously Kitty was used to quit nvim by sending a SIGTERM signal avoid exiting nvim early. - -- The xclip child process was not spawning quick enough in the TextYankPost autocommand, resulting - -- in content not being copied to the clipboard. This was observed running Ubuntu on UTM. - -- The side effect of this is that the message Vim: Caught deadly signal 'SIGTERM' would briefly - -- flash before exiting kitty-scrollback.nvim. To avoid the deadly signal message and provide time - -- for xclip to start, defer calling quitall by 100 ms + -- Contents should be copied to clipboard, return to Kitty + local clipboard_tool = vim.api.nvim_call_function('provider#clipboard#Executable', {}) + local defer_ms = 0 + if clipboard_tool == 'xclip' then + -- The xclip child process was not spawning quick enough in the TextYankPost autocommand, resulting + -- in content not being copied to the clipboard so add a delay + -- see issue https://github.com/astrand/xclip/issues/38#ref-commit-b042f6d + defer_ms = 200 + end vim.defer_fn(function() - vim.cmd.quitall({ bang = true }) - end, 100) + ksb_util.quitall() + end, defer_ms) else vim.schedule(function() local prompt_msg = diff --git a/lua/kitty-scrollback/health.lua b/lua/kitty-scrollback/health.lua index 7ec1f6eb..34719be0 100644 --- a/lua/kitty-scrollback/health.lua +++ b/lua/kitty-scrollback/health.lua @@ -84,15 +84,25 @@ local function check_clipboard() return s:find('^%s*$') ~= nil end vim.health.start('kitty-scrollback: clipboard') - local clipboard_tool = vim.fn['provider#clipboard#Executable']() -- copied from health.lua + local clipboard_tool = vim.api.nvim_call_function('provider#clipboard#Executable', {}) if vim.fn.has('clipboard') > 0 and not is_blank(clipboard_tool) then vim.health.ok('Clipboard tool found: *' .. clipboard_tool .. '*') + if clipboard_tool == 'xclip' then + vim.health.warn([[ +*xclip* may have issues copying content to the clipboard from Neovim. If you are having issues copying or +you are seeing errors similar to `Error : target STRING not available`, you should switch to *xsel* . +See *xclip* related issue: https://github.com/astrand/xclip/issues/38#ref-commit-b042f6d +See Neovim pull request preferring *xsel* over xclip: https://github.com/neovim/neovim/pull/20918 +]]) + end else - vim.health.warn( - 'Neovim does not have a clipboard provider.\n Some functionality will not work when there is no clipboard ' - .. 'provider, such as copying Kitty scrollback buffer text to the system clipboard.', - 'See `:help` |provider-clipboard| for more information on enabling system clipboard integration.' - ) + vim.health.warn([[ +Neovim does not have a clipboard provider. +Some functionality will not work when there is no clipboard provider, such as copying +Kitty scrollback buffer text to the system clipboard. + +See `:help` |provider-clipboard| for more information on enabling system clipboard integration. +]]) end end @@ -123,7 +133,8 @@ local function check_sed() result.stdout = '' result.stderr = sed_proc end - ok = ok and result.code == 0 and result.stdout == 'expected\x1b[0m' + local esc = vim.fn.eval([["\e"]]) + ok = ok and result.code == 0 and result.stdout == 'expected' .. esc .. '[0m' if ok then vim.health.ok( '`' @@ -149,7 +160,9 @@ local function check_sed() .. result.code .. '* and stdout `' .. result.stdout - .. '` (should be `expected\x1b[0m`)\n' + .. '` (should be `expected' + .. esc + .. '[0m`)' .. result_err .. '`\n' .. ' `sed: ' From 88a2a2b4fe40f115b3ad2d27d55b05d8682a14e7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 10 Jan 2024 01:47:04 +0000 Subject: [PATCH 5/8] chore(release): 3.1.5 ## [3.1.5](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.4...v3.1.5) (2024-01-10) ### Bug Fixes * prefer xsel over xclip ([#157](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/157)) ([088b3fc](https://github.com/mikesmithgh/kitty-scrollback.nvim/commit/088b3fcf04e4882dbd2f08822eb33dae2c33b1a2)) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 342e8875..19dfae09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.1.5](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.4...v3.1.5) (2024-01-10) + + +### Bug Fixes + +* prefer xsel over xclip ([#157](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/157)) ([088b3fc](https://github.com/mikesmithgh/kitty-scrollback.nvim/commit/088b3fcf04e4882dbd2f08822eb33dae2c33b1a2)) + ## [3.1.4](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.3...v3.1.4) (2024-01-09) From 44bc53d1bd150ddd06b51ace612f8051f97ed252 Mon Sep 17 00:00:00 2001 From: Mike <10135646+mikesmithgh@users.noreply.github.com> Date: Tue, 9 Jan 2024 22:51:07 -0500 Subject: [PATCH 6/8] chore: fix regex matching cursor position (#158) --- tests/kitty-scrollback/helpers.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/kitty-scrollback/helpers.lua b/tests/kitty-scrollback/helpers.lua index bac4fbc2..86d6997a 100644 --- a/tests/kitty-scrollback/helpers.lua +++ b/tests/kitty-scrollback/helpers.lua @@ -394,7 +394,13 @@ M.feed_kitty = function(input, pause_seconds_after) local stdout = M.debug(M.kitty_remote_get_text()).stdout local last_line = stdout:match('.*\n(.*)\n') local start_of_line, cursor_y, cursor_x = - last_line:match('^(.*)\x1b%[%?25h\x1b%[(%d+);(%d+)H\x1b.*$') + last_line:match('^(.*)\x1b%[%?25[hl]\x1b%[(%d+);(%d+)H\x1b.*$') + + if start_of_line == nil then + print(color_string('red', 'last_line is ' .. last_line:gsub('\x1b', '^['))) + assert.is_not_nil(start_of_line) + end + return { stdout = stdout:gsub('[^\n]*\n$', start_of_line .. '\n'), cursor_x = tonumber(cursor_x), From 141f67804a4d4fe4796d8b65807e95ccca1ff1a8 Mon Sep 17 00:00:00 2001 From: Mike <10135646+mikesmithgh@users.noreply.github.com> Date: Wed, 10 Jan 2024 15:40:42 -0500 Subject: [PATCH 7/8] fix: use nul instead of enquiry (#150) closes #147 --- lua/kitty-scrollback/kitty_commands.lua | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lua/kitty-scrollback/kitty_commands.lua b/lua/kitty-scrollback/kitty_commands.lua index 58b5bab6..d6705dad 100644 --- a/lua/kitty-scrollback/kitty_commands.lua +++ b/lua/kitty-scrollback/kitty_commands.lua @@ -224,15 +224,19 @@ M.send_lines_to_kitty_and_quit = function(lines, execute_command) end, lines), '\r' ) - local esc = vim.fn.eval([["\e"]]) - local enquiry = '\\x05' -- see https://en.wikipedia.org/wiki/Enquiry_character + local esc = [[\x1b]] + local nul_character = [[\x00]] -- see https://en.wikipedia.org/wiki/Null_character local start_bracketed_paste = esc .. '[200~' -- see https://cirw.in/blog/bracketed-paste local stop_bracketed_paste = esc .. '[201~' -- see https://cirw.in/blog/bracketed-paste - -- the beginning enquiry is used to separate any existing commands in kitty that may end with escape + -- the beginning nul is used to separate any existing commands in kitty that may end with escape -- if escape is present, then bash autocompletion will be triggered because bracketed paste mode starts with an escape - -- the ending enquiry is used to remove deselect the text after pasting to the terminal - cmd_str = enquiry .. start_bracketed_paste .. cmd_str .. stop_bracketed_paste .. enquiry + -- the ending nul is used to remove deselect the text after pasting to the terminal + cmd_str = nul_character + .. start_bracketed_paste + .. cmd_str + .. stop_bracketed_paste + .. nul_character if execute_command then -- add a carriage return to execute command From b37611b5bfc657c5a68de73195f2406e432a5ea2 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 10 Jan 2024 20:41:08 +0000 Subject: [PATCH 8/8] chore(release): 3.1.6 ## [3.1.6](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.5...v3.1.6) (2024-01-10) ### Bug Fixes * use nul instead of enquiry ([#150](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/150)) ([141f678](https://github.com/mikesmithgh/kitty-scrollback.nvim/commit/141f67804a4d4fe4796d8b65807e95ccca1ff1a8)), closes [#147](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/147) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19dfae09..7ec30a33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## [3.1.6](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.5...v3.1.6) (2024-01-10) + + +### Bug Fixes + +* use nul instead of enquiry ([#150](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/150)) ([141f678](https://github.com/mikesmithgh/kitty-scrollback.nvim/commit/141f67804a4d4fe4796d8b65807e95ccca1ff1a8)), closes [#147](https://github.com/mikesmithgh/kitty-scrollback.nvim/issues/147) + ## [3.1.5](https://github.com/mikesmithgh/kitty-scrollback.nvim/compare/v3.1.4...v3.1.5) (2024-01-10)