<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neovim/test/functional/vimscript/eval_spec.lua, branch master</title>
<subtitle>Vim-fork focused on extensibility and usability</subtitle>
<id>http://git.waynecole.info/neovim/atom?h=master</id>
<link rel='self' href='http://git.waynecole.info/neovim/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/'/>
<updated>2026-04-24T17:20:25Z</updated>
<entry>
<title>fix(path): normalize path slashes on Windows #37729</title>
<updated>2026-04-24T17:20:25Z</updated>
<author>
<name>tao</name>
<email>2471314@gmail.com</email>
</author>
<published>2026-04-24T17:20:25Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=f130922744657b731c24a842a85fd8a9f8058073'/>
<id>urn:sha1:f130922744657b731c24a842a85fd8a9f8058073</id>
<content type='text'>
Problem:
On Windows, path separators may become inconsistent for various reasons,
which makes normalization quite painful.

Solution:
Normalize paths to `/` at the entry boundaries and always use it
internally, converting back only in rare cases where `\` is really
needed (e.g. cmd.exe/bat scripts?).

This is the first commit in a series of incremental steps.

Note:
* some funcs won't respect shellslash. e.g. `expand/fnamemodify`
* some funcs still respect shellslash, but will be updated in a follow
  PR. e.g. `ex_pwd/f_chdir/f_getcwd`
* uv's built-in funcs always return `\`. e.g. `uv.cwd/uv.exepath`

Co-authored-by: Justin M. Keyes &lt;justinkz@gmail.com&gt;</content>
</entry>
<entry>
<title>refactor(test): drop deprecated exc_exec #39242</title>
<updated>2026-04-20T18:16:41Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-04-20T18:16:41Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=4ceca862fceb021049144a9aed05c60ae39b7aba'/>
<id>urn:sha1:4ceca862fceb021049144a9aed05c60ae39b7aba</id>
<content type='text'>
</content>
</entry>
<entry>
<title>perf(vim.fn): call Lua-implemented vim.fn.xx() directly #39166</title>
<updated>2026-04-17T23:10:20Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2026-04-17T23:10:20Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=0d4d285bd2c19697164175280b32bf93e3a7b1da'/>
<id>urn:sha1:0d4d285bd2c19697164175280b32bf93e3a7b1da</id>
<content type='text'>
Problem:
- Builtin "Vimscript" functions (f_xx) are mostly implemented in C.
  Partly that's because there is some boilerplate required to call out
  to Lua.
- Calls to `vim.fn.foo()` always marshall over the Lua &lt;=&gt; Vimscript
  ("typval") bridge, even if `fn.foo()` is implemented entirely in Lua:
  ```
  Lua =&gt; typval =&gt; Object =&gt; Lua =&gt; Object =&gt; typval =&gt; Lua.
  ```

Solution:
Functions declared in eval.lua with `func_lua` are implemented in
entirely in Lua (`_core/vimfn.lua`).

- `gen_eval.lua` wires `func_lua` entries to `lua_wrapper`, which handles
  the typval conversion for Vimscript callers (slow path).
- `nlua_call()` detects `func_lua` functions and calls the Lua
  implementation directly. This eliminates all conversion overhead for
  Lua callers (fast path).
- Validate at build-time that `func`, `func_float`, and `func_lua` are
  mutually exclusive.
- Migrate `hostname()` as a toy example, to show the idea.</content>
</entry>
<entry>
<title>fix(terminal): resuming doesn't work with command in fish (#37857)</title>
<updated>2026-02-14T02:49:39Z</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2026-02-14T02:49:39Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=1a1a60bd0526b76ae232cc59cd1eaf5ad3ce9e77'/>
<id>urn:sha1:1a1a60bd0526b76ae232cc59cd1eaf5ad3ce9e77</id>
<content type='text'>
Problem:  Resuming terminal process doesn't work with command in fish.
Solution: Send SIGCONT to the entire process group.

Use killpg() like what bash and zsh do on `fg`:
https://cgit.git.savannah.gnu.org/cgit/bash.git/tree/jobs.c?id=637f5c8696a6adc9b4519f1cd74aa78492266b7f#n3928
https://sourceforge.net/p/zsh/code/ci/77045ef899e53b9598bebc5a41db93a548a40ca6/tree/Src/jobs.c#l2674
https://sourceforge.net/p/zsh/code/ci/77045ef899e53b9598bebc5a41db93a548a40ca6/tree/Src/signals.c#l538

Install fish on CI to test this.</content>
</entry>
<entry>
<title>docs: api, pack, events, develop</title>
<updated>2025-07-11T01:50:46Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-06-18T11:39:35Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=58df501913c17cb3a79f41548088d0f0bcf3a305'/>
<id>urn:sha1:58df501913c17cb3a79f41548088d0f0bcf3a305</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(messages): cleanup Lua error messages</title>
<updated>2025-05-04T15:22:57Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2021-08-23T09:37:07Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=fc2dee17368d76e7e845872990bb6fdef1c6bf54'/>
<id>urn:sha1:fc2dee17368d76e7e845872990bb6fdef1c6bf54</id>
<content type='text'>
"Error" in error messages is redundant. Just provide the context, don't
say "Error ...".
</content>
</entry>
<entry>
<title>fix(messages)!: vim.ui_attach message callbacks are unsafe</title>
<updated>2024-11-14T12:23:11Z</updated>
<author>
<name>Luuk van Baal</name>
<email>luukvbaal@gmail.com</email>
</author>
<published>2024-06-20T12:48:06Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=de48fbbd5f8800bd7f1909a6fb41e53e871cf74c'/>
<id>urn:sha1:de48fbbd5f8800bd7f1909a6fb41e53e871cf74c</id>
<content type='text'>
Problem:  Lua callbacks for "msg_show" events with vim.ui_attach() are
          executed when it is not safe.
Solution: Disallow non-fast API calls for "msg_show" event callbacks.
          Automatically detach callback after excessive errors.
          Make sure fast APIs do not modify Nvim state.
</content>
</entry>
<entry>
<title>fix(tests): needing two calls to setup a screen is cringe</title>
<updated>2024-11-14T11:40:57Z</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-11-11T21:15:19Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=e61228a214ebda9845db9462dad0a8c362d3963f'/>
<id>urn:sha1:e61228a214ebda9845db9462dad0a8c362d3963f</id>
<content type='text'>
Before calling "attach" a screen object is just a dummy container for
(row, col) values whose purpose is to be sent as part of the "attach"
function call anyway.

Just create the screen in an attached state directly. Keep the complete
(row, col, options) config together. It is still completely valid to
later detach and re-attach as needed, including to another session.
</content>
</entry>
<entry>
<title>refactor(tests): continue the global highlight definition work</title>
<updated>2024-11-08T12:19:15Z</updated>
<author>
<name>bfredl</name>
<email>bjorn.linse@gmail.com</email>
</author>
<published>2024-11-08T10:45:55Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=abe6a07c54c0e927cf43f7f61b05ac91547daeed'/>
<id>urn:sha1:abe6a07c54c0e927cf43f7f61b05ac91547daeed</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test: improve test conventions</title>
<updated>2024-04-23T16:17:04Z</updated>
<author>
<name>dundargoc</name>
<email>gocdundar@gmail.com</email>
</author>
<published>2024-04-20T15:44:13Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=052498ed42780a76daea589d063cd8947a894673'/>
<id>urn:sha1:052498ed42780a76daea589d063cd8947a894673</id>
<content type='text'>
Specifically, functions that are run in the context of the test runner
are put in module `test/testutil.lua` while the functions that are run
in the context of the test session are put in
`test/functional/testnvim.lua`.

Closes https://github.com/neovim/neovim/issues/27004.
</content>
</entry>
</feed>
