Now that CoreText scrolling performance is fixed with the stateful
renderer we should eventually stop supporting the legacy NSTextView
renderer which doesn't renderer properly and cannot do proper
fixed-width column rendering that Vim uses. Mark it as deprecated for
now but it will be removed in the future.
Problem: Making a mapping work in all modes is complicated.
Solution: Add the <Cmd> special key. (Yegappan Lakshmanan, closes#7282,
closes 4784, based on patch by Bjorn Linse)
Problem: The session file does not restore the alternate file.
Solution: Add ":balt". Works like ":badd" and also sets the buffer as the
alternate file. Use it in the session file. (closes#7269,
closes#6714)
Problem: Fuzzy matching does not support multiple words.
Solution: Add support for matching white space separated words. (Yegappan
Lakshmanan, closes#7163)
Remove langmenu=none from the MacVim vimrc to enable Vim's menu
translations.
Menu cleanups:
- Remove Emoji character picker menu item as macOS already adds it
automatically to Edit menu. No need to do that ourselves.
- Rename some menus to fit macOS more and so we can use an official
Apple translations (e.g. Select Next Tab renamed to "Show Next Tab").
Also, modify extract-specific-localised-strings.swift for MacVim. This
sets up only the locales we need, and add a new mode to generate Vim
menu translations and can be toggled using a command-line parameter.
Vim menu translations
--------------------
Vim already has menu translations, but need to add translations for
MacVim-specific menus. Add menu translations for MacVim in a new
subfolder. Each locale has two new translation files: one with Apple
official translations extracted using the script, and the other one with
custom translations (they were mostly done by referencing existing
translations, e.g. "About MacVim"). Also added a README to try to make
it clear what's going on.
- Not all menu items are translated yet. There are a couple left (e.g.
"Toggle Full Screen" and "Stay in Front") but for it's good for now,
and we can add those translations in later.
MacVim xib translations
--------------------
Convert MainMenu.xib to Base localization and add per-locale strings
files. The top parts are the manually translated strings (well, mostly
from guessworks with help from Google translte), and the bottom parts
are the Apple official ones coming from the script. This mostly affects
the menu that's shown when no Vim instance is opened, and also the main
app menu called "MacVim". Other menu items when there is a window opened
use the Vim menu translations instead.
Other MacVim GUI items like preference pane are currently not localized
as those would likely need someone to go through and actually manually
translate them, and it would be tricky to keep them up to date if we
make changes, which happens from time to time.
Locales
--------------------
- No MacVim translations (Apple didn't have official translations for
them):
- af_af.latin1
- eo.utf-8
- is_is.utf-8
- sl_si.utf-8
- sr_rs.utf-8
- Added MacVim translations:
- ca_es
- cs_cz
- da
- de_de
- es_es
- fi_fi
- fr_fr
- hu_hu
- it_it
- ja
- ko_kr
- nl_nl
- no_no
- pl_pl
- pt_br
- pt_pt
- ru_ru
- sv_se
- tr_tr
- zh_cn
- zh_tw
Close#776
MacVim has previously not included vimtutor, meaning the user had to
obtain it elsewhere. Change the build scripts to copy it over to the app
bundle so that it's under MacVim.app/Contents/bin just like `mvim` etc.
Also, provide a Help menu item to open vimtutor. The menu action will
also make sure to override the PATH first to prevent accidentally
opening other installed MacVim/Vim versions since vimtutor works by
searching PATH instead of explicitly passing in the Vim executable path.
Also, make all Help menu items work in terminal mode as well as an easy
fix.
Problem: A popup created with "cursorline" will ignore "firstline".
Solution: When both "cursorline" and "firstline" are present put the cursor
on "firstline". (closes#7000) Add the "winid" argument to
getcurpos().
Problem: Fuzzy matching only works on strings.
Solution: Support passing a dict. Add matchfuzzypos() to also get the match
positions. (Yegappan Lakshmanan, closes#6947)
Implement macOS Help menu's search functionality, so that it can be used
to search Vim's documentation. For now, can use space-delimited search
string to search Vim's doc tags. The search results will display
something like "options.txt > 'termwinsize'" when searching for "term
size".
Currently this only works with Vim's built-in documentation. Due to the
asynchronous nature of the search, it's a little tricky to support
plugins as different Vim instances could be loading different plugins.
For now, just the built-in Vim documentation should serve most of the
needs.
Also, properly set the help menu on the app so that localized menus will
still show the search box (previously it had to be called exactly
'Help').
Problem: ":highlight clear" does not restore default link.
Solution: Remember the default link and restore it. (Antony Scriven,
closes#6970, closes#4405)