mikesmithgh / kitty-scrollback.nvim

😽 Open your Kitty scrollback buffer with Neovim. Ameowzing!
Apache License 2.0
424 stars 11 forks source link

feat: redesign configuring kitty-scrollback.nvim #69

Closed mikesmithgh closed 7 months ago

mikesmithgh commented 10 months ago

[!IMPORTANT]\ If you have had any pain points configuring kitty-scrollback.nvim, please add a comment or suggestion.

[!WARNING]\ Breaking change

- Consider creating a symlink or copying the kitty_scrollback_nvim.py kitten to Kitty's configuration directory to avoid absolute path in action_alias kitty_scrollback_nvim. See #114 - Option: add to bootstrapping logic, try to do it in a generic way to support lazy/packer/pack/etc - Option: Add to the :KittyScrollbackGenerateKittens command. - Option: Create a wrapper kitten that resolves the path and calls kitty_scrollback_nvim.py -Investigate: user uses environment variable or kitty --config could change path of kitty config directory?

PlexSheep commented 8 months ago

Surprisingly, I've found that just using --nvim-args SOMETHING does a really good job for me! Where as --no-nvim-args takes more than 10 seconds to load and then pushes me into my dashboard with weird red lines, This loads a window that looks like default nvim but with plugins and my custom shortcuts. I use lazy to load plugins, but I can even use things like leap in there. Since leap is declared as not lazy, I assume this just loads all my non lazy plugins, which I think is a fine compromise for a usecase like this.

font_family      FiraCode Nerd Font
font_size 15.0
disable_ligatures never
scrollback_pager nvim -c 'setlocal number|Man!' -c "autocmd VimEnter * normal G" -
enable_audio_bell no
visual_bell_duration 0.01
visual_bell_color yellow
window_alert_on_bell yes
bell_on_tab "🔔 "
tab_bar_edge top
tab_bar_style powerline
tab_powerline_style slanted
tab_title_template "{index} {fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}"
foreground #dddddd
background #111111
shell zsh
editor nvim
allow_remote_control socket-only
listen_on unix:///tmp/kitty.sock
env KITTY_TERM=TRUE
shell_integration enabled

# kitty-scrollback.nvim Kitten alias
action_alias kitty_scrollback_nvim kitten /home/plex/.local/share/nvim/lazy/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py --nvim-args kitty

# Browse scrollback buffer in nvim
map kitty_mod+h kitty_scrollback_nvim
# Browse output of the last shell command in nvim
map kitty_mod+g kitty_scrollback_nvim --config ksb_builtin_last_cmd_output
# Show clicked command output in nvim
mouse_map ctrl+shift+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output

map alt+e        next_tab
map alt+q     previous_tab

I personally would be happier, if this plugin would work a little more like firenvim (which I'm using to write this) in that it just loads the nvim gui into the program, but I can only assume that integrating neovim as a gui into another gui must be really complicated.

mikesmithgh commented 8 months ago

@PlexSheep

--no-nvim-args takes more than 10 seconds to load and then pushes me into my dashboard with weird red lines

That sounds like a bug. Could you create an issue for this with a screenshot and info on what plugin you are using for the dashboard? Most likely kitty-scrollback.nvim is having an issue because it expects an empty buffer.

--nvim-args kitty

This is actually passing kitty to nvim. Which opens a file named kitty. Most likely, the file does not exist and kitty-scrollback.nvim just uses that as the empty buffer and overwrites it.

Right now, I am planning to remove --no-nvim-args and have kitty-scrollback.nvim use the user's nvim configuration. But, I'll still leave --nvim-args if the user wants to pass arguments to change the behavior (e.g., the current default is --clean --noplugins -n).

personally would be happier, if this plugin would work a little more like firenvim

I have not used firenvim but it does look nice. Right now, kitty-scrollback.nvim loads the scrollback buffer into nvim. I'm not sure how the other approach would differ that you mentioned.

Thanks for the feedback!

PlexSheep commented 8 months ago

That sounds like a bug. Could you create an issue for this with a screenshot and info on what plugin you are using for the dashboard? Most likely kitty-scrollback.nvim is having an issue because it expects an empty buffer.

See here

This is actually passing kitty to nvim. Which opens a file named kitty. Most likely, the file does not exist and kitty-scrollback.nvim just uses that as the empty buffer and overwrites it.

That could explain it! Perhaps, would it be a good idea to pass some file name or path by default to bypass dashboards and other stuff that happens when nvim is called without arguments?

I have not used firenvim but it does look nice. Right now, kitty-scrollback.nvim loads the scrollback buffer into nvim. I'm not sure how the other approach would differ that you mentioned.

I'm not sure about the technicalities, but from my understanding, the "host" provides a gui window inside it's own gui, which is "inhabited" by a neovim. This would be pretty out of scope for this plugin, as it would probably require changes in kitty itself. So just ignore me :)

mikesmithgh commented 7 months ago

:tada: This issue has been resolved in version 4.0.0 :tada:

The release is available on GitHub release

Your semantic-release bot :package::rocket: