<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rneovim.git/src/nvim/generators, branch rahm</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(options): generic expand and did_set callbacks (#32011)</title>
<updated>2025-01-16T20:53:17+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2025-01-16T20:53:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=fb564ddff0b4ec9dad5afa7548777af1c3044273'/>
<id>fb564ddff0b4ec9dad5afa7548777af1c3044273</id>
<content type='text'>
* refactor(options): generic expand and did_set callbacks

Problem:

Many options have similar callbacks to check the values are valid.

Solution:

Generalize these callbacks into a single function that reads the option
table.

* refactor: gen_options.lua

refactor: gen_options.lua - inline get_cond

* refactor(options): use a simpler format for the common default</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* refactor(options): generic expand and did_set callbacks

Problem:

Many options have similar callbacks to check the values are valid.

Solution:

Generalize these callbacks into a single function that reads the option
table.

* refactor: gen_options.lua

refactor: gen_options.lua - inline get_cond

* refactor(options): use a simpler format for the common default</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(options): remove code for multitype options</title>
<updated>2025-01-14T09:34:17+00:00</updated>
<author>
<name>Famiu Haque</name>
<email>famiuhaque@proton.me</email>
</author>
<published>2024-12-28T08:55:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=c5f93d7ab04f93db1470d58ca1f70e947e716c2b'/>
<id>c5f93d7ab04f93db1470d58ca1f70e947e716c2b</id>
<content type='text'>
Problem: It was decided on Matrix chat that multitype options won't be necessary for Neovim options, and that options should only have a single canonical type. Therefore the code for supporting multitype options is unnecessary.

Solution: Remove the additional code that's used to provide multitype option support.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: It was decided on Matrix chat that multitype options won't be necessary for Neovim options, and that options should only have a single canonical type. Therefore the code for supporting multitype options is unnecessary.

Solution: Remove the additional code that's used to provide multitype option support.
</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:1718e7d: runtime(vim): Update base-syntax, improve ex-bang matching (#31922)</title>
<updated>2025-01-09T00:40:50+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-01-09T00:40:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=0d469b697ed48a1cb1b624d65b6cd22a47195707'/>
<id>0d469b697ed48a1cb1b624d65b6cd22a47195707</id>
<content type='text'>
Always match ex-bang explicitly rather than incidentally as the ! operator.

fixes: vim/vim#16221
closes: vim/vim#16410

https://github.com/vim/vim/commit/1718e7d07e391571ac81c507a746b3bc7a7e2024

Co-authored-by: Doug Kearns &lt;dougkearns@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Always match ex-bang explicitly rather than incidentally as the ! operator.

fixes: vim/vim#16221
closes: vim/vim#16410

https://github.com/vim/vim/commit/1718e7d07e391571ac81c507a746b3bc7a7e2024

Co-authored-by: Doug Kearns &lt;dougkearns@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>feat(jobs): jobstart(…,{term=true}), deprecate termopen() #31343</title>
<updated>2024-12-19T15:07:04+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2024-12-19T15:07:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=8ef41f590224dfeea2e51d9fec150e363fd72ee0'/>
<id>8ef41f590224dfeea2e51d9fec150e363fd72ee0</id>
<content type='text'>
Problem:
`termopen` has long been a superficial wrapper around `jobstart`, and
has no real purpose. Also, `vim.system` and `nvim_open_term` presumably
will replace all features of `jobstart` and `termopen`, so centralizing
the logic will help with that.

Solution:
- Introduce `eval/deprecated.c`, where all deprecated eval funcs will live.
- Introduce "term" flag of `jobstart`.
- Deprecate `termopen`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
`termopen` has long been a superficial wrapper around `jobstart`, and
has no real purpose. Also, `vim.system` and `nvim_open_term` presumably
will replace all features of `jobstart` and `termopen`, so centralizing
the logic will help with that.

Solution:
- Introduce `eval/deprecated.c`, where all deprecated eval funcs will live.
- Introduce "term" flag of `jobstart`.
- Deprecate `termopen`.</pre>
</div>
</content>
</entry>
<entry>
<title>vim-patch:9.1.0908: not possible to configure :messages (#31492)</title>
<updated>2024-12-07T02:17:36+00:00</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2024-12-07T02:17:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=ec94c2704f5059794923777ed51412d80bd26b5b'/>
<id>ec94c2704f5059794923777ed51412d80bd26b5b</id>
<content type='text'>
Problem:  not possible to configure :messages
Solution: add the 'messagesopt' option (Shougo Matsushita)

closes: vim/vim#16068

https://github.com/vim/vim/commit/51d4d84d6a7159c6ce9e04b36f8edc105ca3794b

Co-authored-by: Shougo Matsushita &lt;Shougo.Matsu@gmail.com&gt;
Co-authored-by: h_east &lt;h.east.727@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:  not possible to configure :messages
Solution: add the 'messagesopt' option (Shougo Matsushita)

closes: vim/vim#16068

https://github.com/vim/vim/commit/51d4d84d6a7159c6ce9e04b36f8edc105ca3794b

Co-authored-by: Shougo Matsushita &lt;Shougo.Matsu@gmail.com&gt;
Co-authored-by: h_east &lt;h.east.727@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>fix(api): deprecate nvim_subscribe, nvim_unsubscribe #30456</title>
<updated>2024-12-02T12:16:44+00:00</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2024-12-02T12:16:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=716adbcc4563f5b4d1b7bc0301530296c538a33c'/>
<id>716adbcc4563f5b4d1b7bc0301530296c538a33c</id>
<content type='text'>
Problem:
- nvim_subscribe, nvim_unsubscribe were deprecated in
  aec4938a21a02d279d13a9eb64ef3b7cc592c374 but this wasn't set in the
  API metadata.
- The function annotations
  ```
  FUNC_API_SINCE(1) FUNC_API_REMOTE_ONLY FUNC_API_DEPRECATED_SINCE(13)
  ```
  cause this test to fail:
   ```
   RUN T3 api metadata functions are compatible with old metadata or have new level: 3.00 ms ERR
   test/functional/api/version_spec.lua:135: function vim_subscribe was removed but exists in level 0 which nvim should be compatible with
   stack traceback:
     test/functional/api/version_spec.lua:135: in function &lt;test/functional/api/version_spec.lua:128&gt;
   ```

Solution:
- Set the API metadata.
- Rearrange the annotations so that FUNC_API_DEPRECATED_SINCE is 2nd:
  ```
  FUNC_API_SINCE(1) FUNC_API_DEPRECATED_SINCE(13) FUNC_API_REMOTE_ONLY
  ```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
- nvim_subscribe, nvim_unsubscribe were deprecated in
  aec4938a21a02d279d13a9eb64ef3b7cc592c374 but this wasn't set in the
  API metadata.
- The function annotations
  ```
  FUNC_API_SINCE(1) FUNC_API_REMOTE_ONLY FUNC_API_DEPRECATED_SINCE(13)
  ```
  cause this test to fail:
   ```
   RUN T3 api metadata functions are compatible with old metadata or have new level: 3.00 ms ERR
   test/functional/api/version_spec.lua:135: function vim_subscribe was removed but exists in level 0 which nvim should be compatible with
   stack traceback:
     test/functional/api/version_spec.lua:135: in function &lt;test/functional/api/version_spec.lua:128&gt;
   ```

Solution:
- Set the API metadata.
- Rearrange the annotations so that FUNC_API_DEPRECATED_SINCE is 2nd:
  ```
  FUNC_API_SINCE(1) FUNC_API_DEPRECATED_SINCE(13) FUNC_API_REMOTE_ONLY
  ```</pre>
</div>
</content>
</entry>
<entry>
<title>refactor: gen_declarations.lua</title>
<updated>2024-11-29T13:25:53+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2024-11-26T12:26:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=3056115785a435f89d11551e1c8bb4c89c90f610'/>
<id>3056115785a435f89d11551e1c8bb4c89c90f610</id>
<content type='text'>
Problem:
gen_declarations.lua is complex and has duplicate logic with
c_grammar.lua

Solution:
Move all lpeg logic to c_grammar.lua and refactor gen_declarations.lua.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
gen_declarations.lua is complex and has duplicate logic with
c_grammar.lua

Solution:
Move all lpeg logic to c_grammar.lua and refactor gen_declarations.lua.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(keysets): teach Union and LuaRefOf</title>
<updated>2024-11-25T17:34:02+00:00</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2024-11-24T10:40:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=8d55cc218cfed54136677398ca76c45987b15f29'/>
<id>8d55cc218cfed54136677398ca76c45987b15f29</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(options): autogenerate valid values and flag enums for options (#31089)</title>
<updated>2024-11-23T08:22:06+00:00</updated>
<author>
<name>Famiu Haque</name>
<email>famiuhaque@proton.me</email>
</author>
<published>2024-11-23T08:22:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=8516c2dc1f301c439695629fff771227dbe00d30'/>
<id>8516c2dc1f301c439695629fff771227dbe00d30</id>
<content type='text'>
Problem: Option metadata like list of valid values for an option and
option flags are not listed in the `options.lua` file and are instead
manually defined in C, which means option metadata is split between
several places.

Solution: Put metadata such as list of valid values for an option and
option flags in `options.lua`, and autogenerate the corresponding C
variables and enums.

Supersedes #28659

Co-authored-by: glepnir &lt;glephunter@gmail.com&gt;</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem: Option metadata like list of valid values for an option and
option flags are not listed in the `options.lua` file and are instead
manually defined in C, which means option metadata is split between
several places.

Solution: Put metadata such as list of valid values for an option and
option flags in `options.lua`, and autogenerate the corresponding C
variables and enums.

Supersedes #28659

Co-authored-by: glepnir &lt;glephunter@gmail.com&gt;</pre>
</div>
</content>
</entry>
<entry>
<title>refactor(options): remove `.indir`, redesign option scopes #31066</title>
<updated>2024-11-16T20:56:16+00:00</updated>
<author>
<name>Famiu Haque</name>
<email>famiuhaque@proton.me</email>
</author>
<published>2024-11-16T20:56:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.josher.dev/cgit/rneovim.git/commit/?id=29ded889579a9d590e8ea885a9a402ff4bae87be'/>
<id>29ded889579a9d590e8ea885a9a402ff4bae87be</id>
<content type='text'>
Problem:
The way option scopes currently work is inflexible and does not allow for nested
option scopes or easily finding the value of an option at any arbitrary scope
without having to do long handwritten switch-case statements like in
`get_varp()`. `.indir` is also confusing and redundant since option indices for
each scope can be autogenerated.

Solution:
Expand option scopes in such a way that an option can support any amount of
scopes using a set of scope flags, similarly to how it's already done for option
types. Also make options contain information about its index at each scope it
supports. This allows for massively simplifying `get_varp()` and
`get_varp_scope()` in the future by just using a struct for options at each
scope. This would be done by creating a table that stores the offset of an
option's variable at a scope by using the option's index at that scope as a key.
This PR also autogenerates enums for option indices at each scope to remove the
need for `.indir` entirely, and also to allow easily iterating over options all
options that support any scope.

Ref: #29314</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Problem:
The way option scopes currently work is inflexible and does not allow for nested
option scopes or easily finding the value of an option at any arbitrary scope
without having to do long handwritten switch-case statements like in
`get_varp()`. `.indir` is also confusing and redundant since option indices for
each scope can be autogenerated.

Solution:
Expand option scopes in such a way that an option can support any amount of
scopes using a set of scope flags, similarly to how it's already done for option
types. Also make options contain information about its index at each scope it
supports. This allows for massively simplifying `get_varp()` and
`get_varp_scope()` in the future by just using a struct for options at each
scope. This would be done by creating a table that stores the offset of an
option's variable at a scope by using the option's index at that scope as a key.
This PR also autogenerates enums for option indices at each scope to remove the
need for `.indir` entirely, and also to allow easily iterating over options all
options that support any scope.

Ref: #29314</pre>
</div>
</content>
</entry>
</feed>
