<feed xmlns='http://www.w3.org/2005/Atom'>
<title>neovim/runtime/lua/vim/_editor.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>2025-12-30T06:44:24Z</updated>
<entry>
<title>build: ship "_core/*" as bytecode (built-into Nvim binary)</title>
<updated>2025-12-30T06:44:24Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-08-29T03:43:10Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=20e77c5d886af54d1f7b6844cffc11129f579ad9'/>
<id>urn:sha1:20e77c5d886af54d1f7b6844cffc11129f579ad9</id>
<content type='text'>
Problem:
We want to encourage implementing core features in Lua instead of C, but
it's clumsy because:
- Core Lua code (built into `nvim` so it is available even if VIMRUNTIME
  is missing/invalid) requires manually updating CMakeLists.txt, or
  stuffing it into `_editor.lua`.
- Core Lua modules are not organized similar to C modules, `_editor.lua`
  is getting too big.

Solution:
- Introduce `_core/` where core Lua code can live. All Lua modules added
  there will automatically be included as bytecode in the `nvim` binary.
- Move these core modules into `_core/*`:
  ```
  _defaults.lua
  _editor.lua
  _options.lua
  _system.lua
  shared.lua
  ```

TODO:
- Move `_extui/ =&gt; _core/ui2/`
</content>
</entry>
<entry>
<title>fix(lua): separate vim.{g,b,w,t} types #37081</title>
<updated>2025-12-23T15:39:22Z</updated>
<author>
<name>phanium</name>
<email>91544758+phanen@users.noreply.github.com</email>
</author>
<published>2025-12-23T15:39:22Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=1aa26f5d55550dd12c2cfd0f74618f0dcd6467ec'/>
<id>urn:sha1:1aa26f5d55550dd12c2cfd0f74618f0dcd6467ec</id>
<content type='text'>
Problem:
When `vim.g.foo = 1`, `vim.b.foo` also appears as
a completion candidate (when use emmylua_ls).

Solution:
Define separate types.</content>
</entry>
<entry>
<title>fix(lua): don't remove first char of non-file stacktrace source (#37008)</title>
<updated>2025-12-18T00:09:16Z</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-12-18T00:09:16Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=c08139d790b783dc82f96869fdc14111495d1cd4'/>
<id>urn:sha1:c08139d790b783dc82f96869fdc14111495d1cd4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(input): discard following keys when discarding &lt;Cmd&gt;/K_LUA (#36498)</title>
<updated>2025-11-20T04:33:02Z</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-11-20T04:33:02Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=a04c73cc17f5fd9643fcf9de28ef957547f4a424'/>
<id>urn:sha1:a04c73cc17f5fd9643fcf9de28ef957547f4a424</id>
<content type='text'>
Technically the current behavior does match documentation. However, the
keys following &lt;Cmd&gt;/K_LUA aren't normally received by vim.on_key()
callbacks either, so it does makes sense to discard them along with the
preceding key.

One may also argue that vim.on_key() callbacks should instead receive
the following keys together with the &lt;Cmd&gt;/K_LUA, but doing that may
cause some performance problems, and even in that case the keys should
still be discarded together.</content>
</entry>
<entry>
<title>fix(paste): don't use :echo immediately before :redraw (#35773)</title>
<updated>2025-09-15T22:06:02Z</updated>
<author>
<name>zeertzjq</name>
<email>zeertzjq@outlook.com</email>
</author>
<published>2025-09-15T22:06:02Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=a5d69326860fa28a4dd4921e4bdb662d2dcd0355'/>
<id>urn:sha1:a5d69326860fa28a4dd4921e4bdb662d2dcd0355</id>
<content type='text'>
- If tick == 0 at the last chunk, the first :echo will print an empty
  string, which isn't really helpful, and may cause :redraw to move
  cursor to the message area for 'showmode'.
- If tick &gt; 0 at the last chunk, there'll be another :echo that prints
  an empty string immediately after the :redraw.</content>
</entry>
<entry>
<title>feat(lua): `vim.pos`/`vim.range`</title>
<updated>2025-08-17T03:54:53Z</updated>
<author>
<name>Yi Ming</name>
<email>ofseed@foxmail.com</email>
</author>
<published>2025-08-03T15:17:44Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=98f8224c1948fd8440f13f84f19a0adb78171fe4'/>
<id>urn:sha1:98f8224c1948fd8440f13f84f19a0adb78171fe4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(net): vim.net.request(), :edit [url] #34140</title>
<updated>2025-07-13T20:43:11Z</updated>
<author>
<name>Tom Ampuero</name>
<email>46233260+tampueroc@users.noreply.github.com</email>
</author>
<published>2025-07-13T20:43:11Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=7cd5356a6f89a46d83bbba9b7f6496b67f054629'/>
<id>urn:sha1:7cd5356a6f89a46d83bbba9b7f6496b67f054629</id>
<content type='text'>
Problem:
Nvim depends on netrw to download/request URL contents.

Solution:
- Add `vim.net.request()` as a thin curl wrapper:
  - Basic GET with --silent, --show-error, --fail, --location, --retry
  - Optional `opts.outpath` to save to a file
  - Operates asynchronously. Pass an `on_response` handler to get the result.
- Add integ tests (requires NVIM_TEST_INTEG to be set) to test success
  and 404 failure.
- Health check for missing `curl`.
- Handle `:edit https://…` using `vim.net.request()`.

API Usage:
1. Asynchronous request:

    vim.net.request('https://httpbingo.org/get', { retry = 2 }, function(err, response)
      if err then
        print('Fetch failed:', err)
      else
        print('Got body of length:', #response.body)
      end
    end)

2. Download to file:

    vim.net.request('https://httpbingo.org/get', { outpath = 'out_async.txt' }, function(err)
      if err then print('Error:', err) end
    end)

3. Remote :edit integration (in runtime/plugin/net.lua) fetches into buffer:

    :edit https://httpbingo.org/get</content>
</entry>
<entry>
<title>fix(lua): vim.diff is nil in uv.new_work() thread #34909</title>
<updated>2025-07-13T03:54:22Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-07-13T03:54:22Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=89b946aa87d2414bd268f0766d5354cedc5702ff'/>
<id>urn:sha1:89b946aa87d2414bd268f0766d5354cedc5702ff</id>
<content type='text'>
Problem:
The "gitsigns" plugin runs `vim.diff` in a thread (`uv.new_work`), but
`vim.diff` is nil in that context:

    Lua callback:
    …/gitsigns.nvim/lua/gitsigns/diff_int.lua:30: bad argument #1 to 'decode' (string expected, got nil)
    stack traceback:
      [C]: in function 'decode'
      …/gitsigns.nvim/lua/gitsigns/diff_int.lua:30: in function &lt;…/gitsigns.nvim/lua/gitsigns/diff_int.lua:29&gt;
    Luv thread:
    …/gitsigns.nvim/lua/gitsigns/diff_int.lua:63: attempt to call field 'diff' (a nil value)

Solution:
Revert the `stdlib.c` change (set `vim.diff` instead of `vim._diff`).</content>
</entry>
<entry>
<title>refactor(lua): rename vim.diff =&gt; vim.text.diff #34864</title>
<updated>2025-07-12T22:36:07Z</updated>
<author>
<name>Justin M. Keyes</name>
<email>justinkz@gmail.com</email>
</author>
<published>2025-07-12T22:36:07Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=f3a54e7ccfcfa2752eccd7585e2c4b94a4c8c433'/>
<id>urn:sha1:f3a54e7ccfcfa2752eccd7585e2c4b94a4c8c433</id>
<content type='text'>
Problem:
`vim.diff()` was introduced before we had the `vim.text` module, where
it obviously belongs.

Solution:
Move it.</content>
</entry>
<entry>
<title>docs: move vim.system to own section</title>
<updated>2025-07-10T12:34:58Z</updated>
<author>
<name>Lewis Russell</name>
<email>lewis6991@gmail.com</email>
</author>
<published>2025-07-10T09:32:17Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/neovim/commit/?id=e644038f06b4e3401f9b496bbe4337bfe8b18146'/>
<id>urn:sha1:e644038f06b4e3401f9b496bbe4337bfe8b18146</id>
<content type='text'>
</content>
</entry>
</feed>
