**Problem**:
Currently, whenever user get's on prompt-text area we move the user to
end of user-input area. As a result when left/c-left,home keys are
triggered at start of user-input the cursor get's placed at end of
user-input. But this behavior can be jarring and unintuitive also it's
different from previous behavior where it'd just stay at start of
input-area. Also, previously when insert-mode was triggered in
prompt-text with n_a for example then cursor was placed at start of
user-input area not at the end. So, that behavior was also broken.
**Solution:**
Restore previous behavior. Don't force user to end of user-input when
entering insert-mode from readonly section.
Problem: A plugin does not know when startup scripts were already
triggered. This is useful to determine if a function is
called inside vimrc or after (like when sourcing 'plugin/'
files).
Solution: Add the v:vim_did_init variable (Evgeni Chasnovski)
closes: vim/vim#18668294bce21ee
Nvim has two more steps between sourcing startup scripts and loading
plugins. Set this variable after these two steps.
Co-authored-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
Problem: In visual mode, g<End> does not move to the last non-blank
character when the end of a line is on the same line as the
cursor (after v9.0.1753)
Solution: Move the cursor back by one position if it lands after the
line (varsidry)
fixes: vim/vim#18657closes: vim/vim#18658adc85151f3
Problem:
In socket_connect(), if connecting to the given TCP address times out,
libuv is still trying to connect to the address, and connect_cb may be
called when running the libuv event loop after the `status` variable
referenced by `req.data` goes out of scope.
Solution:
Close the uv_tcp_t handle and wait for connect_cb to be called before
retrying or failing in socket_connect(). This also avoid leaking libuv
handles.
The tests added here only check that the non-timeout case still works,
as checking the timeout case is very hard without modifications to the
code. Removing the first LOOP_PROCESS_EVENT_UNTIL() in socket_connect()
(the one with the timeout) is a way to check that manually.
Also add a comment about the cause of the ASAN error in #34586.
Problem:
On MSWIN, file completion (CTRL-X CTRL-F) only works for the current
drive (so not for actual absolute paths), since drive letters are never
included in the completion pattern.
e.g. when completing "F:\Hello" Nvim currently completes "\Hello"
which is relative to the current drive/volume.
vim solves this by adding ':' to the default 'isfname' value on mswin,
but that causes issues as ':' is not a valid windows path char anywhere
_except_ after the drive letter.
Solution:
detect drive letters in front of the path when creating the completion
pattern.
Problem: %P in 'statusline' doesn't behave as documented
(after 9.1.1479).
Solution: Make the percentage 3-chars wide when not translated.
(zeertzjq)
fixes: vim/vim#18669closes: vim/vim#1867173a0de4a04
Co-authored-by: Christ van Willegen <cvwillegen@gmail.com>
Problem: regression when displaying localized percentage position
(after v9.1.1291)
Solution: calculate percentage first (Emir SARI)
Cleanups made in ec032de broke the Turkish percent display, failing to
prepend it properly in cases between 0 and 10. In Turkish, the percent
sign is prepended to the number, so it was displaying it as `% 5`
(should have been `%5`), while displaying numbers bigger than 9 properly.
related: vim/vim#175978fe9e55a7d
The test was unskipped in Vim in patch 9.1.1479 which added Turkish
translation for "%d%%". However, Nvim has had Turkish translation for
"%d%%" since 2023, so don't skip the test.
Co-authored-by: Emir SARI <emir_sari@icloud.com>
compile time features are hot again.
Note: this changes the &term value for builtin definition from
'builtin_xterm' to just 'xterm'. It's an xterm regardless of we use an
external definition or an internal. Prior to this commit the vast
majority of POSIX users will have used external terminfo, so plugins and
scripts are only going to have checked for &term == 'xterm' or 'tmux' or
whatever.
The status of external loading is still available in "nvim -V3" output.
Problem: string handling in strings.c can be improved
Solution: Refactor strings.c and remove calls to STRLEN()
(John Marriott)
This change does:
- In vim_strsave_shellescape() a small cosmetic change.
- In string_count() move the call to STRLEN() outside the while loop.
- In blob_from_string() refactor to remove call to STRLEN().
- In string_from_blob() call vim_strnsave() instead of vim_strsave().
- In vim_snprintf_safelen() call vim_vsnprintf_typval() directly instead
of vim_vsnprintf() which then calls vim_vsnprintf_typval().
- In copy_first_char_to_tv() change to return -1 on failure or the length
of resulting v_string. Change string_filter_map() and string_reduce() to
use the return value of copy_first_char_to_tv().
closes: vim/vim#18617110656ba60
Co-authored-by: John Marriott <basilisk@internode.on.net>
Problem: too many strlen() calls in buffer.c
Solution: refactor buffer.c and remove strlen() calls
(John Marriott)
closes: vim/vim#17063ec032de646
Co-authored-by: John Marriott <basilisk@internode.on.net>
Problem: Wrong display with cpo+=$, matchparen and wrapped line.
Solution: Use old cursor line height when scrolling with cpo+=$. Also
fix wrong redraw in non-current window. (zeertzjq)
fixes: vim/vim#18647closes: vim/vim#186625c3e762631
This was part of an attempt to add "git describe" to zig build
without re-building too much. This doesn't yet work as zig upstream
changes are are also needed, but I think this was a sensible refactor
even in isolation, so breaking it out.
"API dispatch" doesn't depend on any ui event stuff nor on
version, that was just an accident of the metadata collection
being crammed into the same file.
Remove "manual invocation" instruction. this is going to bitrot anyway.
Both cmake and build.zig allows you to extract the command line of a
step, so you can debug it separately.
problem: termkey/driver-ti.c had its internal dependency upon unibilium
which would completely skip builtin terminfo defs.
solution: add termkey info to TerminfoEntry struct
NOTE: this disables a lot of named function keys which are present as
terminfo "keys" both are mostly unset in terminfo entries for modern
terminals, and also not recognized by nvim as mappable keys
anyway, except a few ones like `<undo>` which this still will keep.
We probably don't want to encode up to F63 keys forever. While only 12
physical keys are available on modern keybords, instead Chords using
F-keys are usually encoded as high key numbers, like <C-S-F3>
becoming <F39> . But reconsideirg that has implications for configuration
that is best done as a separate (breaking) change.
Problem: Wrong restored cursor position when re-entering a buffer
previously viewed in a window after making changes to the same
buffer in another window.
Solution: Adjust per-window "last cursor" positions on buffer changes.
(zeertzjq)
closes: vim/vim#18655b2e6b328da
Problem: Wrong display with 'smoothscroll' when FEAT_DIFF is disabled.
Solution: Use plines_correct_topline() (zeertzjq).
closes: vim/vim#18649e06e70f7b1
Problem:
fe4faaf81a added an invalid "redirect" item, which caused the
assert() to fail, which then caused the neovim/doc/ CI to fail:
https://github.com/neovim/doc/actions/runs/18830779387/job/53721736276 :
The previous commit e69beb9b1a tried to fix a different issue, which
has gone hidden because the "invalid tags" failure has been present on
the neovim/doc/ but was silently failing.
invalid tags: {
["g:netrw_keepdir"] = "usr_22.txt",
netrw = "vi_diff.txt",
...
plugins = "editorconfig"
}
Solution:
- Fix the invalid redirect.
- Improve the redirects assertion.
Problem:
The doc/ repo CI is failing
https://github.com/neovim/doc/actions/runs/18830779387/job/53721736276 :
invalid tags: {
["g:netrw_keepdir"] = "usr_22.txt",
netrw = "vi_diff.txt",
["netrw-P"] = "usr_22.txt",
...
["netrw-v"] = "usr_22.txt",
plugins = "editorconfig"
}
Solution:
Add the "generate netrw tags" hack to the `gen()` step. Previously it was only
in the `validate()` step. (idk why it only started failing 3 days ago...)
Problem: pre-inserted text not exposed in complete_info()
Solution: Add the pre-inserted text to the complete_info() Vim script
function (Girish Palya)
closes: vim/vim#18571
Feat: expose preinserted text in complete_info()
ef5bf58d8c
Co-authored-by: Girish Palya <girishji@gmail.com>
Problem: cindent: wrong indentation after an array declaration
Solution: check if the filetype if javascript before matching the syntax
(Anttoni Erkkilä)
cindent matches a javascript syntax for C files causing wrong
indentation in the following case:
```
void foo() {
float a[5],
b;
}
```
closes: vim/vim#1863161ef8a3db9
Co-authored-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Problem: Cmdline history not updated when mapping both <Up> and <CR>.
Solution: Consider the command typed when in Cmdline mode and there is
no pending input (zeertzjq).
Although the existing behavior technically does match documentation, the
"completely come from mappings" part is a bit ambiguous, because one may
argue that the command doesn't completely come from mappings as long as
the user has typed a key in Cmdline mode. I'm not entirely sure if this
change will cause problems, but it seems unlikely.
fixes: vim/vim#2771
related: neovim/neovim#36256closes: vim/vim#1860797b6e8b424
vim-patch:8.1.2194: modifyOtherKeys is not enabled by default
vim-patch:8.2.0513: reading past allocate memory when using varargs
vim-patch:8.2.0556: Vim9: memory leak when finding common type
vim-patch:8.2.1446: Vim9: line number in error message is not correct
vim-patch:8.2.1680: Vim9: line number for compare error is wrong
vim-patch:8.2.1817: Vim9: wrong instruction when reusing a local variable spot
vim-patch:8.2.2159: Vim9: when declaring a list it is not allocated yet
vim-patch:8.2.2210: Vim9: allocating a type to set TTFLAG_BOOL_OK
vim-patch:8.2.2550: signal stack size is wrong with latest glibc 2.34
vim-patch:8.2.2585: Vim9: illegal memory access
vim-patch:8.2.2615: test is sourcing the wrong file
vim-patch:8.2.2791: Vim9: memory leak when using \=expr in :substitute
vim-patch:8.2.3065: Vim9: error when sourcing script twice and reusing function
vim-patch:8.2.3310: Vim9: unpack assignment does not mention source of type error
vim-patch:8.2.3327: no check for sysconf() failing
vim-patch:8.2.4558: Motif: using default colors does not work as expected
vim-patch:9.0.0039: not all systems have GDK_KEY_dead_circumflex
vim-patch:9.0.0068: build fails with tiny features
vim-patch:9.0.0074: Coverity warns for double free
vim-patch:9.0.0172: trying to allocate zero bytes
vim-patch:9.0.0209: build error with small features
vim-patch:9.0.0239: build failure without the +wildmenu feature
vim-patch:9.0.0255: build failure without the eval feature
vim-patch:9.0.0290: compiler warning for variable set but not used
vim-patch:9.0.0367: Coverity complains about dropping sign of character
vim-patch:9.0.0368: old Coverity warning for using NULL pointer
vim-patch:9.0.0467: build failure
vim-patch:9.0.0494: small build misses float function declaraitons
vim-patch:9.0.0501: warning for using uninitialized value in mouse test
vim-patch:9.0.0503: build failure
vim-patch:9.0.0504: still a build failure
vim-patch:9.0.0522: build fails on Appveyor
vim-patch:9.0.0624: leaking argument type array
vim-patch:9.0.0628: Coverity warns for not checking return value
vim-patch:9.0.0658: tiny build fails on Mac OS
vim-patch:9.0.0685: FORTIFY_SOURCE causes a crash in Vim9 script
vim-patch:9.0.0689: compiler warning for unused function
vim-patch:9.0.0717: compiler warning for unused variable in tiny build
vim-patch:9.0.0787: mouse scrolling in terminal misbehaves without dll
vim-patch:9.0.0792: MS-Windows: compiler complains about unused function
vim-patch:9.0.0832: deprecation warning causes build failure
vim-patch:9.0.0838: compiler warnings for unused variables
vim-patch:9.0.0921: missing defined(PROTO) in #ifdef
vim-patch:9.0.0929: build failure with tiny version
vim-patch:9.0.0972: build failure on some systems
vim-patch:9.0.0981: build error in tiny version
vim-patch:9.0.0986: build failure with tiny version
vim-patch:9.0.0997: Coverity warns for dead code
vim-patch:9.0.1003: tiny build fails
vim-patch:9.0.1037: lalloc(0) error for a class without members
vim-patch:9.0.1055: Coverity warns for using uninitialized memory
vim-patch:9.0.1059: build failure with some compilers
vim-patch:9.0.1075: build fails if compiler doesn't allow declaration after case
vim-patch:9.0.1102: complicated use of #ifdef
vim-patch:9.0.1109: leaking allocated type
vim-patch:9.0.1110: build fails on Mac OS X 10.4/10.5
vim-patch:9.0.1116: compiler may complain about an unused function
vim-patch:9.0.1131: build failure without the +eval feature
vim-patch:9.0.1153: build error with some compilers
vim-patch:9.0.1154: Coverity warns for dead code
vim-patch:9.0.1162: configure does not handle all FORTIFY_SOURCE variants
vim-patch:9.0.1173: compiler warning for unused variable on non-Unix systems
vim-patch:9.0.1180: compiler warnings without the +job feature
vim-patch:9.0.1216: Coverity warns for ignoring return value
vim-patch:9.0.1219: handling of FORTIFY_SOURCE flags doesn't match Fedora usage
vim-patch:9.0.1260: Coverity warns for possible NULL pointer usage
vim-patch:9.0.1323: build failure with +eval feature
vim-patch:9.0.1340: Coverity warns for using NULL pointer
vim-patch:9.0.1341: build error with mzscheme but without GUI
vim-patch:9.0.1364: build error with older Mac OS
vim-patch:9.0.1420: build failure because SIZE_MAX is not defined
vim-patch:9.0.1465: Haiku build fails
vim-patch:9.0.1642: build failure with tiny features
vim-patch:9.0.1780: Vim9 type not defined during object creation
vim-patch:9.0.1850: Vim9: wrong line number where options set
vim-patch:9.0.1902: Vim9: Coverity complains about dead code
vim-patch:9.0.1905: FEAT_FLOAT no longer defined
vim-patch:9.0.1988: Vim9: potential use-after-free for class members
vim-patch:9.0.1993: warning about unused function definition
vim-patch:9.0.2003: xxd: compilation warning
vim-patch:9.0.2014: confusing ifdefs in if_<lang>.c
vim-patch:9.0.2048: python: uninitialized warning
vim-patch:9.0.2115: crash when callback function aborts because of recursiveness
vim-patch:9.0.2120: un-used assignment in do_source_buffer_init
vim-patch:9.0.2129: [security]: use-after-free in call_dfunc()
vim-patch:9.0.2166: Memory leak in Configure Script when checking GTK
vim-patch:9.0.2175: Compiler warning for uninitialized var
vim-patch:9.0.2185: Coverity complains about not checking return value
vim-patch:9.1.0018: use of #if instead of #ifdef
vim-patch:9.1.0031: Link Error on Windows
vim-patch:9.1.0036: MS-Windows: Warning about unused variable
vim-patch:9.1.0072: Not able to build without FEAT_DIFF
vim-patch:9.1.0203: build-error on GNU/Hurd
vim-patch:9.1.0209: leaking memory in exe_newdict() on error
vim-patch:9.1.0210: Motif: leaking memory when mui_mch_dialog() fails
vim-patch:9.1.0298: MS-Windows: GETTEXT_PATH hard-coded in src/po/Make_mvc.mak
vim-patch:9.1.0346: Patch v9.1.0338 fixed sourcing a script with import
vim-patch:9.1.0362: expanding rc config files does not work well
vim-patch:9.1.0432: Ancient XPM preprocessor hack may cause build errors
vim-patch:9.1.0530: xxd: MSVC warning about non-ASCII character
vim-patch:9.1.0561: netbeans: variable used un-initialized (Coverity)
vim-patch:9.1.0609: outdated comments in Makefile
vim-patch:9.1.0621: MS-Windows: startup code can be improved
vim-patch:9.1.0627: MinGW: build-error when COVERAGE is enabled
vim-patch:9.1.0630: MS-Windows: build fails with VIMDLL and mzscheme
vim-patch:9.1.0825: compile error for non-diff builds
vim-patch:9.1.0829: Vim source code uses a mix of tabs and spaces
vim-patch:9.1.0842: not checking for the sync() systemcall
vim-patch:9.1.0858: Coverity complains about dead code
vim-patch:9.1.0947: short-description
vim-patch:9.1.0959: Coverity complains about type conversion
vim-patch:9.1.0970: VMS: build errors on VMS architecture
vim-patch:9.1.1032: link error when FEAT_SPELL not defined
vim-patch:9.1.1041: Vim9: out-of-bound access when echoing an enum
vim-patch:9.1.1079: GUI late startup leads to uninitialized scrollbars
vim-patch:9.1.1153: build error on Haiku
vim-patch:9.1.1199: gvim uses hardcoded xpm icon file
vim-patch:9.1.1248: compile error when building without FEAT_QUICKFIX
vim-patch:9.1.1251: if_python: build error with tuples and dynamic python
vim-patch:9.1.1270: missing out-of-memory checks in buffer.c
vim-patch:9.1.1316: missing memory allocation failure in os_mswin.c
vim-patch:9.1.1440: too many strlen() calls in os_win32.c
rim-patch:9.1.1514: Coverity complains about the use of tmpfile()
vim-patch:9.1.1547: Wayland: missing ifdef
vim-patch:9.1.1580: possible memory leak in vim9type.c
vim-patch:9.1.1581: possible memory leak in vim9generics.c
vim-patch:9.1.1624: Cscope not enabled on MacOS
vim-patch:9.1.1661: Coverity finds a few issues in clientserver.c
vim-patch:9.1.1662: Issues with proto files: missing or inconsistent prototypes.
vim-patch:9.1.1677: wrong ifdef in message.c
vim-patch:9.1.1678: Amiga: cannot handle large undo files
vim-patch:9.1.1705: time.h include is available on all platforms
vim-patch:9.1.1707: diff.pro contains #ifdefs
vim-patch:9.1.1716: wrong indent in win_line()
vim-patch:9.1.1723: Missing ifdefs
vim-patch:9.1.1793: Link error when build without channel feature
vim-patch:9.1.1804: Wrong indentation of nested ifdefs in findfile.c
vim-patch:9.1.1806: Missing PROTO defines
vim-patch:9.1.1842: MS-Windows: build failure when mzscheme is included
vim-patch:9.1.1851: memory leak in heredoc_get()
vim-patch:9.1.1852: vim9class: memory leak in parse_member()
Problem: When pumborder is set, the scrollbar still occupies
a column on the screen, wasting a 1 column of space.
Solution: Render the scrollbar on the right/left (rl mode) side
of the border when pumborder is set.