<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/src/termkey, branch userregs_2</title>
<subtitle>Neovim fork with Rahm's personal hacks.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/'/>
<entry>
<title>refactor: adopt termkey and eliminate duplicate code</title>
<updated>2024-09-05T12:28:12+00:00</updated>
<author>
<name>dundargoc</name>
<email>gocdundar@gmail.com</email>
</author>
<published>2024-08-14T13:52:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=f9108378b7a7e08b48685f0a3ff4f7a3a14b56d6'/>
<id>f9108378b7a7e08b48685f0a3ff4f7a3a14b56d6</id>
<content type='text'>
Termkey is abandoned and it's now our code, so there's no reason not to
treat it as such. An alternative approach could be to have a proper repo
that we maintain such as with unibilium, although with this approach we
can make a few assumptions that will allow us to remove more code.

Also eliminate duplicate code from both termkey and libvterm.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Termkey is abandoned and it's now our code, so there's no reason not to
treat it as such. An alternative approach could be to have a proper repo
that we maintain such as with unibilium, although with this approach we
can make a few assumptions that will allow us to remove more code.

Also eliminate duplicate code from both termkey and libvterm.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(tui): parse CSI subparams in termkey (#29805)</title>
<updated>2024-07-22T02:47:37+00:00</updated>
<author>
<name>Gregory Anders</name>
<email>8965202+gpanders@users.noreply.github.com</email>
</author>
<published>2024-07-22T02:47:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=f93ecd2760f5859fd5eeec28c7c2196ece98e9a1'/>
<id>f93ecd2760f5859fd5eeec28c7c2196ece98e9a1</id>
<content type='text'>
libtermkey does not know how to parse CSI subparameters (parameters
separated by ':', ASCII 0x3A) and currently just ignores them. However,
many important CSI sequences sent by the terminal make use of
subparameters, most notably key events when using the kitty keyboard
protocol [1]. Enabling subparameters is a prerequisite for expanding
kitty keyboard protocol support in Neovim.

Concretely, we do this by returning pointers into the internal termkey
buffer for each CSI parameter rather than parsing them into integers
directly. When a caller wants to actually use the parameter as an
integer, they must call termkey_interpret_csi_param, which parses the
full parameter string into an integer parameter and zero or more
subparameters.

The pointers into the internal buffer will become invalidated when new
input arrives from the terminal so it is important that the individual
params are used and parsed right away. All of our code (and libtermkey's
code) does this, so this is fine for now, but is something to keep in
mind moving forward.

[1]: https://sw.kovidgoyal.net/kitty/keyboard-protocol/</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
libtermkey does not know how to parse CSI subparameters (parameters
separated by ':', ASCII 0x3A) and currently just ignores them. However,
many important CSI sequences sent by the terminal make use of
subparameters, most notably key events when using the kitty keyboard
protocol [1]. Enabling subparameters is a prerequisite for expanding
kitty keyboard protocol support in Neovim.

Concretely, we do this by returning pointers into the internal termkey
buffer for each CSI parameter rather than parsing them into integers
directly. When a caller wants to actually use the parameter as an
integer, they must call termkey_interpret_csi_param, which parses the
full parameter string into an integer parameter and zero or more
subparameters.

The pointers into the internal buffer will become invalidated when new
input arrives from the terminal so it is important that the individual
params are used and parsed right away. All of our code (and libtermkey's
code) does this, so this is fine for now, but is something to keep in
mind moving forward.

[1]: https://sw.kovidgoyal.net/kitty/keyboard-protocol/</pre>
</div>
</content>
</entry>
<entry>
<title>Handle mouse buttons 6/7 (often used for horizontal scrolling)</title>
<updated>2023-12-30T20:56:35+00:00</updated>
<author>
<name>Paul "LeoNerd" Evans</name>
<email>leonerd@leonerd.org.uk</email>
</author>
<published>2023-07-31T12:32:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=b4ef9134007aeab421d93299bdf3b97fba0ffa79'/>
<id>b4ef9134007aeab421d93299bdf3b97fba0ffa79</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Ignore key_mouse unless it is exactly \e[M because some terminfos relate to different encoding modes (thanks Ninji)</title>
<updated>2023-12-30T20:56:35+00:00</updated>
<author>
<name>Paul "LeoNerd" Evans</name>
<email>leonerd@leonerd.org.uk</email>
</author>
<published>2019-06-27T20:45:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=ffe96c6c1c6c54bc03f2d534c9a6bf92c2dd1e51'/>
<id>ffe96c6c1c6c54bc03f2d534c9a6bf92c2dd1e51</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(termkey): include IO header on Windows</title>
<updated>2023-11-30T18:22:53+00:00</updated>
<author>
<name>Gregory Anders</name>
<email>greg@gpanders.com</email>
</author>
<published>2023-11-30T18:18:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=50f5864dd245400415e56175dd866e67a67d6c8e'/>
<id>50f5864dd245400415e56175dd866e67a67d6c8e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(termkey): accept BEL (0x07) as OSC terminator</title>
<updated>2023-11-30T18:02:10+00:00</updated>
<author>
<name>Gregory Anders</name>
<email>greg@gpanders.com</email>
</author>
<published>2023-11-30T17:55:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=5999214c242d9103cfc68fc3102af1af47e6c9fd'/>
<id>5999214c242d9103cfc68fc3102af1af47e6c9fd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(termkey): do not sign extend mode value</title>
<updated>2023-11-30T18:02:10+00:00</updated>
<author>
<name>Gregory Anders</name>
<email>greg@gpanders.com</email>
</author>
<published>2023-11-30T17:54:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=ce2f770aaa23591f62c2c1352fece228878f48af'/>
<id>ce2f770aaa23591f62c2c1352fece228878f48af</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>build: vendor libtermkey</title>
<updated>2023-11-30T18:02:10+00:00</updated>
<author>
<name>dundargoc</name>
<email>gocdundar@gmail.com</email>
</author>
<published>2023-11-01T21:33:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=404043e74c523bff049558685bd88213cc71ed7a'/>
<id>404043e74c523bff049558685bd88213cc71ed7a</id>
<content type='text'>
This is a proof of concept/WIP to evaluate the viability of vendoring
libtermkey as it's been deprecated.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a proof of concept/WIP to evaluate the viability of vendoring
libtermkey as it's been deprecated.
</pre>
</div>
</content>
</entry>
</feed>
