Updated to Vim 9.1.1887
This update is still built against macOS 15 Sequoia, and does not
contain any specific fixes or improvements for macOS 26 Tahoe. That will
come in a future update.
Announcements
====================
Moving macOS 10.13 - 10.15 support to legacy release
--------------------
Currently, MacVim binary releases are available in two versions: a
normal version (macOS 10.13 or above), and a legacy version (macOS
10.9-10.12). Starting next release (r183), the normal version will
require macOS 11 or above (due to Xcode 26 requirements), and macOS
10.13-10.15 users will need to use the legacy version instead. This will
mostly be a transparent change, and the updater will automatically
update to the right version. The legacy version should be almost
identical to said users as they are using older versions of macOS that
can't make use of newer OS features to begin with.
In the future we may remove support for macOS 10.9-10.12 but for now
they are still supported.
Features
====================
Better mouse support
--------------------
- Scroll wheels should feel much better to use in MacVim. A small scroll
is now guaranteed to scroll at least one line, and shift-scrolling
(horizontal scroll) works correctly now. You can now also turn off
macOS's scroll wheel acceleration to scroll a fixed amount of lines in
the "Input" settings pane. #1566
- Mouse buttons 4 and 5 can now be bound to `<X1Mouse>` and `<X2Mouse>`
in Vim mappings (`:h X1Mouse`). #1534
New Vim Features
====================
- Diff mode improvements
- Vim diff can now highlight per-character or per-word differences
within a line. Per-character highlighting is now used by default.
See `:h 'diffopt'` under "inline". v9.1.1243
- Diff anchors allow for more explicit controls over how and where
the diff algorithm aligns text across files (`:h diff-anchors`).
v9.1.1557
- Lots of auto-completion improvements. Some highlights below:
- New option: `autocomplete`. Get completion suggestions as you
type. See `:h ins-autocompletion`. v9.1.1590
- Fuzzy matching now uses the fzf algorithm. v9.1.1627
- Popup menu borders can now be styled (`:h 'pumborder'` / `:h
'completepopup'`). v9.1.1835 / v9.1.1856
- Can now specify a custom completion source when using insert-mode
completion (`:h 'complete'`). v9.1.1301
- `set completeopt+=nearest` will sort completion items by proximity
to the cursor. v9.1.1308
- Command-line completion
- Search commands like `/` and `:g` can be tab-completed now.
v9.1.1490 v9.1.1526
- Commands like `:filetype` and `:highlight` have better
auto-completion. v9.1.1340 / v9.1.1138
- New vertical tab panel (`:h tabpanel`). v9.1.1391
- new bundled optional plugins (use `packadd` to enable them):
- hlyank (`:h package-hlyank`): Briefly highlight region of last
yank command
- new commands:
- `:uniq` (`:h :uniq`): Remove duplicate adjacent lines v9.1.1477
General
====================
- Sparkle (updater for MacVim) is now updated to 2.8.0. #1605
Security Fixes
====================
- Fixed MacVim erroneously setting the get-task-allow entitlement, which
could allow another user-installed application to inspect it
(CVE-2025-8597) #1585
Fixes
====================
- Fixed issue where macOS services (available in the "Services" menu)
could not insert text when not in visual mode. #1571#1569
- Fixed issue where guifont did not accept PostScript names with
underscores (e.g. "CascadiaMono-Regular_Light"). #1600
- MacVim now uses the standard `v:colornames` variable for choosing
highlight colors. #1568
- Vim syntax now understands MacVim-specific function
`showdefinition()`. #1601
Compatibility
====================
Requires macOS 10.9 or above. (10.9 - 10.12 requires downloading a
separate legacy build)
Script interfaces have compatibility with these versions:
- Lua 5.4
- Perl 5.34
- Python2 2.7
- Python3 3.9 or above
- Ruby 3.4
Up till macOS 13, the default terminal does not properly advertise it
supports italics, and Vim just silently replaces it with the "reverse"
effect. Revently, a test in test_popup (Test_popup_shadow_hiddenchar)
was added and the test dumps assume italics support. Add checks to skip
this test if we detect that italics is not supported to avoid failing
the screen dump tests.
Note that macos-13 is being sunset by GitHub Actions, but we still use a
self-hosted version of it to make legacy builds.
Note that due to MacVim silently passing all flaky tests currently, this
test wasn't breaking CI anyway, but it did slow it down due to test
retries, and we do want to go back to not silently passing flaky tests
in near future.
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: #18617
Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
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: #18655
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: :defer an empty lambda causes a crash
(Maxim Kim, after v9.1.1882)
Solution: Check for missing arguments (Yegappan Lakshmanan)
related: #18641closes: #18653
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Wrong display with 'smoothscroll' when FEAT_DIFF is disabled.
Solution: Use plines_correct_topline() (zeertzjq).
closes: #18649
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Vim9: Not able to use a lambda with :defer
(Maxim Kim)
Solution: Add support for this (Yegappan Lakshmanan)
fixes: #18626closes: #18643
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: Crash when using a lambda funcref with :defer
Solution: De-reference the partial correctly after invoking the deferred
functions (Yegappan Lakshmanan).
closes: #18640
Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
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: #18631
Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Match the name used at :help :let-heredoc, {endmarker}.
closes: #18638
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
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: #18571
Signed-off-by: Girish Palya <girishji@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Feat: expose preinserted text in complete_info()
Signed-off-by: Christian Brabandt <cb@256bit.org>
Problem: username parsing bug in netrw plugin when using remote adding
feature
Solution: Allow any characters except for "@" (Václav Kobera), add a
test for the netrw plugin
closes: #18611
Signed-off-by: Václav Kobera <vasekobera@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
- Highlight :@ as a normal Ex command rather than something special.
- Fix erroneous matching of the Ex command as a register variable.
closes: #18624
Signed-off-by: Doug Kearns <dougkearns@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
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: #2771
related: neovim/neovim#36256closes: #18607
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
Features a new updater dialog box design and Tahoe support. Delta
updates also get performance improvements.
Also contains security fixes for the XPC services (which MacVim strips out
from the build already)
Vim upstream is broken right now (clipboard does not work) and so we
cherry-pick the specific fix from it instead of just merging.
(cherry picked from commit 6cb995970e)
And include "extra" Linux elements to further disambiguate
archive names.
The current naming of artifacts is inadequate when it comes
to files whose differing name-parts only come from array
values, as arrays are not automatically converted to string.
For example, both artifacts for failing "socketserver" and
"no_x11" CI jobs will claim the same name, and whichever job
finishes last is allowed to overwrite another matching name
artifact.
Reference:
https://docs.github.com/en/actions/reference/workflows-and-actions/expressions#functionscloses: #18556
Signed-off-by: Aliaksei Budavei <0x000c70@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This fixes a bug introduced in 2a33b499a3:
When makeTargetinDefine ends with makeIdent, makeSpecTarget or
makeComment, the following line is also matched as makeTargetinDefine.
So, add keepend to prevent that just as makeTarget does.
related: #18403closes: #18570
Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com>
Signed-off-by: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>
Signed-off-by: Christian Brabandt <cb@256bit.org>