Problem: Cursor in wrong position when leaving insert mode.
Solution: Update the w_valid flags. Position the cursor also when not
redrawing. (closes#12137)
Problem: Indent wrong after "export namespace" in C++.
Solution: Skip over "inline" and "export" in any order. (Virginia Senioria,
closes#12134, closes#12133)
Currently a lot of the .po locale files are generated using iconv to
different encodings. This is only necessary if the version of Vim does
not have iconv and cannot dynamically convert encoding, which isn't the
case for MacVim. Furthermore, MacVim should only work in UTF-8 anyway,
so it's not useful to have all the other non-UTF-8 locales (e.g.
zh_CN.cp936.po) being built and bundled together, as they make the build
process more complicated and bulk up the binary size of the app bundle.
Simply modify the Makefile to not install / build any of the duplicate
locale files. For locales like ko/zh_CN/zh_TW, where the "base" version
ko.po is in a non-UTF-8 locale and converted from a ko.UTF-8.po, we keep
only the ko.UTF-8.po version, but during install we install the folder
as "ko" instead of "ko.UTF-8". This way, if someone somehow set
LANG=ko_KR, it will still work instead of having to set
LANG=ko_KR.UTF-8.
Currently, pl.po is an odd one out because pl.UTF-8.po is actually
generated from pl.po, instead of the other way round. We just use pl.po
since that's the source version, instead of using the generated UTF-8
one for simplicity (MacVim can handle it fine).
Also, revert the MacVim-local translations made to these non-UTF8
locales like zh_CN.cp936.po, since we don't use them anymore in MacVim
builds.
Saved ~2 MB in the app bundle, and ~1MB in the generated dmg.
Sparkle 2.4 added support for customizing the displayed version string
instead of just showing the "display version" from the manifest (see
https://github.com/sparkle-project/Sparkle/issues/2267). Since MacVim
has a somewhat non-standard usage of bundle vs display version (bundle
is release number, and display version is the upstream Vim version), we
really want to show both to the user, in a concise manner. Support this
customization so it looks like "r123 (Vim 9.1.2345)" (here, "123" is the
bundle version / release number, and "9.1.2345" is the display version /
Vim version).
Fix#1293
2.3.2
- Contains a fix to prevent Sparkle (and the app) from crashing if the
appcast contains file:// or invalid URLs.
2.4
- Add ability to customize version string displays, which is useful for
MacVim as our bundle version (MacVim release number) and display
version (Vim release) are different things and we want to customize
how they are displayed.
- Sparkle binary size reduced roughly by half. This does mean it doesn't
come with debug symbols anymore so we would need to cross-correlate
with dSYM files.
This helps the user know whether they are using a relatively untested
build and should consider going back to a main release. We currently
just define "pre-release" build as any release version with a minor
version, e.g. r176.1 is a pre-release, but r176 isn't.
Also, move the order around so we show "MacVim r123 (Vim
9.0.1234)" instead of "Vim 9.0.1234 (MacVim r123)" which is more
consistent with other ways we show version numbers, and this will be
how we show version number when we upgrade to Sparkle 2.4 as well.
MacVim's `:hardcopy` implementation just uses Preview to show the
generated PostScript file and lets the user decide what to do with it.
macOS 13 Ventura removed PostScript support from Preview, so we now have
to manually convert it to PDF first using `pstopdf` (which is thankfully
bundled with macOS).
While we are at it, update the script so that we actually delete the
file after sending it to Preview. Previously MacVim never did that and
therefore leaks the file in a temp folder until Vim closes, which isn't
ideal for privacy. Now, just set a 10 sec timer to delete the file after
it's opened (we just need enough time to allow Preview to open and load
the file, which doesn't take much time. The 10 sec timer is to account
for slow computers).
Fix#1347
Turn on parallel building, to remove the "Building targets in manual
order is deprecated" project warning.
Also, fix configure to only set macOS deployment target to the major
version of macOS when automatically setting it from the client OS
version. E.g. On macOS 13.2 it will set deployment to 13.0. This is
useful because usually we don't want it to be as granular as the minor
version which had caused issues in Homebrew before
(https://github.com/Homebrew/homebrew-core/issues/111693) where they had
to fix on their end, and also 13.2 ends up being too new for Xcode which
only expects to see up to 13.1 as deployment target.
- Note that the logic used to work in OSX 10.X days because the "minor"
version of X is actually the OS version, whereas in macOS 11/12/13 we
now have versions like 13.2 where the first number is now the OS
version. The configure script will now detect whether it's 10.X.Y or
X.Y (X != 10) and set the correct target correspondingly.
Set mouseshape correctly when using 'r' or 'gr'. Otherwise Vim will only
do it when mouse moves or window receives focus, which is a little
random. This change will be ported upstream.
Part of this was originally part of #1178 but we removed the qlstephen
parts to prepare for eventual removal. Couple years later and we haven't
removed qlstephen yet, so just fix the warnings for now first.
From #1178:
- Fix the project localization name from English to "en"
- Set ALWAYS_SEARCH_USER_PATHS to "NO"
Also:
- Remove the hard-coded macOS 10.8 deployment target which actually
isn't supported by modern Xcode versions. Just unset it as our CI
usually sets that for us.
- The post-build script is now tagged properly to always run.
- Ignore all deprecation warnings. These were exposed because we removed
the 10.8 deployment target. Since we aren't going to be fixing them
(we are either just going to grab newer versions from upsteram, or
delete this), there's no point in having these warnings.
Previously MacVim started to use the latest autoconf (2.71) but it's
best to match upstream in version to make it easier to diff/merge
changes, and also because the version upgrade is technically not 100%
backwards compatible.
Add an empty implementation to remove a diff from upstream, which
constantly shows up when resolving merge conflicts. We just make the
implementation empty because we already handle mouse hide in the MacVim
process using NSCursor instead, and don't need Vim's manual handling of
it.
Also, refactor test_macvim.vim a little.