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.
Problem: Vim9: key type that can be used for literal dict and indexing is
inconsistent.
Solution: Allow using number and bool as key for a literal dict. (#7771)
Problem: No way to check for the cmdwin feature, cmdline_hist is now always
enabled.
Solution: Add has('cmdwin') support. Skip arglist test on Windows
temporarily.
Problem: Vim9: compiled functions are not profiled.
Solution: Add initial changes to profile compiled functions. Fix that a
script-local function was hard to debug.
Problem: No focus events in a terminal.
Solution: Add the t_fd and t_fe termcap entries and implement detecting
focus events. (Hayaki Saito, Magnus Groß, closes#7673,
closes#609, closes#5526)
Problem: Vim9: return type of readfile() is any.
Solution: Add readblob() so that readfile() can be expected to always
return a list of strings. (closes#7671)
Problem: Not easy to get mark en cursor posotion by character count.
Solution: Add functions that use character index. (Yegappan Lakshmanan,
closes#7648)
Problem: Cursor keys not recognized at the hit-Enter prompt after executing
an external command.
Solution: Change the codes for the extra cursor keys. (closes#7562)
Tune the delays to avoid test flakyness.