Problem: When 'matchpairs' is empty every character beeps. (Marco Hinz)
Solution: Bail out when no character in 'matchpairs' was found.
(closes#8053) Add assert_nobeep().
Problem: Vim9: cannot use only some of the default arguments.
Solution: Use v:none to use default argument value. Remove
uf_def_arg_idx[], use JUMP_IF_ARG_SET. (closes#6504)
Problem: 'fillchars' "stl" and "stlnc" items must be single byte.
Solution: Accept multi-byte characters. (Christian Wellenbrock, Yegappan
Lakshmanan, closes#7927)
Problem: Cannot change the characters displayed in the foldcolumn.
Solution: Add fields to 'fillchars'. (Yegappan Lakshmanan, Matthieu Coudron,
closes#7860)
Problem: Vim9: cannot use Vim9 script syntax in some places.
Solution: Add the :vim9cmd command modifier. Incompatible: Makes ":vim9"
mean ":vim9cmd" instead of ":vim9script".
For native fullscreen, simply remove the custom animation as it doesn't
look good and doesn't look native. This was added back when resizing the
window rapidly would result in artifacts, but they should have all been
fixed. As such, no need to hide everything under a black fade.
For custom fullscreen, make it so that if `MMFullScreenFadeTime` is set
to 0 (which is now the default), the fading animation will simply not be
drawn as it simply flickers. Since it now defaults to 0, the user will
have to manually set this back to 0.25 to get the old functionality,
which is ok as it's somewhat a legacy feature anyway and there shouldn't
be any flickering now during the transition.
Also, update documentation on full-screen to provide more info on native
vs custom, and clean up old outdated texts.
Misc driveby fixes related to full screen:
- Robustify the Touch Bar full screen button to listen to `OptionSet`
event which is more robust than relying on `VimResized`, which also
didn't work when 'fuoptions' is set to nothing.
- Make MacVim handle the DidFailToEnter/ExitFullScreen events better.
These events could fire when using native full screen while the user
is e.g. switching space. We need to make sure to properly update the
states when these two events happen and let Vim know what the current
`'fullscreen'` state is so both sides are synced.
- Fix up the preferences pane's full screen buttons to not trigger
fontPropertiesChanged which was a mistake due to copy-and-paste in
Interface Builder.
See:
- #292 / #289 which implemented the fade effect.
Fix misc non-native full screen sizing issues. Previously, in certain
cases such as using non-native full screen in a secondary monitor, the
non-native full screen window would be offsetted and half the window
shown offscreen, making it hard to use.
The bug is that we call `resizeVimView` and `centerView` immediately
after resizing Vim's frame, but the frame resize only asynchronously
calls processInputQueueDidFinish in MMWindowController, which now
actually handles all the frame resizing logic. `centerView` was
therefore calculating using the wrong info, and tried to center the view
on wrong coordinates. Just fix this by removing those two functions as
they are no longer needed as processInputQueueDidFinish already does
everything.
Also, fix `fuopts` to support unsetting maxvert/maxhorz again (this was
what `centerView` was trying to do). Simply add hooks to
processInputQueueDidFinish to query the non-native full screen window
for what the desired size is, instead of just assuming we wan to fill
the whole frame.
* Fix#509
Also, add a new option `MMNonNativeFullScreenShowMenu` to allow showing
the menu bar instead of auto-hiding it while using non-native full
screen as it could be useful to show it, and less jarring to switch
among different apps.
Move preferences around so non-native full screen is now a "regular"
option under Apperance instead of Advanced. Also expose the non-native
show menu option so it's exposed to users.
This is a follow-up to #1155.