Hacker News new | ask | show | jobs
by doix 760 days ago
If neovim had a proper gui, you could move away from some of the limitations of the terminal. The biggest being using fixed width characters for drawing UI elements.

Emacs does it pretty well, one of the few things that makes me jealous of emacs as a vim user.

3 comments

IIUC fixed widths is more than just a UI problem. Lots of internal code is assuming that. But maybe it works well-enough that it isn't a real issue.

I remember trying a terminal that didn't have fixed char widths and it mostly worked. The only real issue was line wrapping (as vim and the terminal would both wrap based on how long they considered the line to be). So maybe it would be possible! I would love to see solid support for variable-width fonts.

I know variable-width fonts are controversial, but I actually think they work well for coding but haven't had the chance to use them much due to Vim limitations. But especially for Markdown and similar mostly-text content they seem like a clear win.

And input limitations can be resolved by non-terminal UIs (for example like Ctrl+i and Tab being mapped to the same control character in old terminals - that one is solved by newer protocols, but the problems don't end there.)
Neovim already supports these keys as long as you are using a terminal that supports the Kitty keyboard protocol (Kitty, wezterm, alacritty, foot, ghostty)
also even the newer protocols fail to support modifier sides (left vs right shift)
Kitty keyboard protocol does indeed support modifier sides.
No it doesn't, and the author rejected the proposal to add them

https://sw.kovidgoyal.net/kitty/keyboard-protocol/

Modifiers are encoded as a bit field with:

shift 0b1 (1) alt 0b10 (2) ctrl 0b100 (4) super 0b1000 (8) hyper 0b10000 (16) meta 0b100000 (32) caps_lock 0b1000000 (64) num_lock 0b10000000 (128)

Yes modifiers are a state, not a key. The kitty keyboard protocol does indeed send events for left and right modifier key press/releas as you can easily see for yourself by running

kitten show-key -m kitty

in a kitty terminal and pressing the left and right modifier keys.

> Yes modifiers are a state, not a key

So why are you talking about a key then??? Kitty doesn't support left/right modifiers unlike proper keybinding handling apps, the left/right presses for non-modifier keys aren't relevant

How would you bind LeftAlt-A to something different from RightAlt-A in Kitty?

I'd really like image support in a Neovim GUI.

It'd make markdown editing easier for me

Seems more likely to be something you implement with e.g. kitty/iterm/sixel escape codes than moving to a GUI app. Actually probably is something that could be implemented in neovim today. Maybe even by a plugin, not sure what control they have over stuff like that.
see 3rd/image.nvim on github. There might be others