Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not showing new window in OS X 10.9 #1212

Closed
d-c opened this issue Oct 4, 2021 · 18 comments · Fixed by #1268
Closed

Not showing new window in OS X 10.9 #1212

d-c opened this issue Oct 4, 2021 · 18 comments · Fixed by #1268
Milestone

Comments

@d-c
Copy link

d-c commented Oct 4, 2021

I can run Macvim.app in the current (8.2.3455 (172)) version on my OS X 10.9, but there is no new window with empty file (no matter what setup I use). I can select the recent file, but the new window with text doesn't appear. Drag'n'drop doesn't work either.

Last version I used without issues was a very ancient one. When I try to user a newer version, it breaks even the older one into the same non-working behaviour, so to get back to the working state is not easy. I cleaned up anything I found, what might have any connection to MacVim and tried to use older versions. Ended up with "Custom Version 8.2.539 (163)" released on 12 Apr 2020 which worked again.

When I try to run the native app (/Applications/MacVim.app/Contents/MacOS/MacVim) from the shell, it runs non-graphical vim. After I quit with :q it says:

2021-10-04 12:54:44.989 MacVim[34079:507] -[MMWindow setTitlebarAppearsTransparent:]: unrecognized selector sent to instance 0x7fb5dad3d8e0, but I don't return to shell before I quit the graphical interface.

If I try to select e. g. a file from Recents, it opens in terminal, but with very limited possibilities of work, no graphical window.

@eirnym
Copy link
Contributor

eirnym commented Oct 4, 2021

Hi,

could you try with clean defaults and clean vimrc, like --clean?

setTitlebarAppearsTransparent

it's actually a very useful find! Looking by a "terminal" keyword, I'd like to ask you to test your setup with releases 164 and 166. with clean configuration and no defaults.

As I see some problems in 168 and 169, I suggest to try 170/171 after that. There was no release message about fixes, but they might be fixed

@ychin
Copy link
Member

ychin commented Oct 4, 2021

I can try to run this in a VM. 10.9 is definitely on legacy support so it isn't very well tested. I think this is the transparent titlebar support and I think we just need to add some checks to make sure it doesn't call it on old version of OSX.

Last version I used without issues was a very ancient one

Do you know what "ancient one" means? a few months / a year / a few years ago?

@ychin ychin added this to the snapshot-173 milestone Oct 4, 2021
@d-c
Copy link
Author

d-c commented Oct 4, 2021

I am sorry, I added those extra pieces into the original post, it might have been missed. So once again:

  1. I did try to manually remove all .vimrc and files found in ~/Library (everything found which had macvim in name/directory).
  2. IMHO the last version working on OS X 10.9 is 163 released on 12 Apr 2020.

I tried to compile recent git version and it fails on XIB file for preferences compilation. The file is for X Code 8.0 and up, there is only XCode 6.2 on 10.9. I don't really understand UI Designer being mostly just a console guy. :-) Sorry.

@ychin
Copy link
Member

ychin commented Oct 4, 2021

Is there a reason why you need to build MacVim from scratch? Because we moved from NIB to XIB it could be hard for you to build locally on 10.9

@d-c
Copy link
Author

d-c commented Oct 4, 2021

No real reason. I just wanted to give it a try, with an opportunity to try a bit of debugging. But it's really of a very little use for me, I usually program in plain C.

@chuchana
Copy link

I also can't get MacVim to open any windows on macOS 10.14.6 when I start it conventionally.

Since opening it from a shell seems to work as expected, I created a one-line script to start it that way and tested it successfully.

Then I tried to get rid of the script opening a terminal window by copying the script's content into a shell script section of an Automator Application. Weirdly, executing that application leads to the same result as opening MacVim conventionally. Even when I call my shell script from there instead of copying its content.

I hope this can point someone in the direction of at least some part of the problem.

@d-c
Copy link
Author

d-c commented Aug 7, 2022

I tried a new 173 version and I must admit, that the issue is all the same:

2022-08-08 00:21:15.198 MacVim[13815:507] -[MMWindow setTitlebarAppearsTransparent:]: unrecognized selector sent to instance 0x7fb8a1c7d590
8H4C31H

...no new window...

@ychin
Copy link
Member

ychin commented Aug 8, 2022

Thanks for reminding me about this issue. I'll set up some VMs to test it.

I do wish GitHub Action provides older VMs but I guess generally Apple dislikes maintaining older versions of OSes like this.

@ychin
Copy link
Member

ychin commented Aug 8, 2022

Btw @d-c , if you are comfortable, do you mind giving some context as to why you are using macOS 10.9? Reason I’m asking is that while it’s still the minimum version supported, it’s getting harder to support as time passes. For example, Sparkle 2 (the updater we use to update MacVim) requires 10.11. We are using Sparkle 1 which is fine for now but eventually we may have to upgrade.

10.9 is 8 years old now, and both 10.10 and 10.11 have the same system requirements as 10.9 so hardware should not be an issue. Is it simply because you prefer it?

@d-c
Copy link
Author

d-c commented Aug 8, 2022

@ychin IMHO is 10.9 the Apple's top system according to ergonomic use, compatibility with SW (some of which was quite expensive), design and stability. I have used quite a lot of systems (and tough trainings on some of them), so I am not comparing just a few impressions.

I have tried newer OS X and macOS systems. One difficulty for me is screen handling. It might be well readable on a retina screen, but $2k+ profi CGs by EIZO seem unreadable. Other is that newer systems are kind of broken in regard of security (from stupid "business" reasons - e. g. to let unprivileged users buy and run apps from store), which in turn is followed by more and more stupid remedies. And more incompatibilities to Unix rules and existing programs. The last more less usable was High Sierra, but it's unsupported for a long time now, so benefits are low.

Yes, I know I will need to move away with my everyday work from 10.9 pretty soon, probably leaving an off-line working place to do photo, sound and video processing. But I am not sure whether to another Mac. *BSD system seems more convincing to me. But still searching...

@ychin
Copy link
Member

ychin commented Aug 9, 2022

I see. Ok those are good insights.

compatibility with SW

Lol tell me about it! Every OS update is a mix of excitement and trepidation for me.

Kind of curious what you mean by incompatibilities to Unix rules though, but maybe we are getting off to a tangent.

@chdiza
Copy link
Contributor

chdiza commented Aug 9, 2022

@d-c Sorry to butt in here, but I was a staunch advocate of keeping support for Tiger here, back in the day, and thus I sympathize greatly with your desire to keep going with an old and non-crappy version of macOS.

Long story short: depending on your workflow and your needs, you might not even need MacVim at all on 10.9. Perhaps you can get away with just building an up-to-date console Vim.

Terminal emulators on macOS have improved immensely since I starting MacVimming around 2007 when it first appeared. (Holy crap! Has it been 15 years of MacVimming?) So much so that the advantages of using MacVim over a plain console Vim---which were many back in 2007---have dwindled down to almost nothing (for me, anyway).

As it turns out, I'm switching to Linux, where there is no way to reliably map the Cmd key in Vim/gVim (without horrible side effects). This has forced me to retrain my Vim muscle-memory to use other modifiers besides Cmd, and it really only took about two days before it became natural. Well, guess what? The ability to have :map <D-something> was really the only reason left for me to use MacVim rather than console Vim. So on those occasions when I do use macOS, I would have no problem just using console Vim instead of MacVim.

  • I don't open files by double-clicking them in the Finder, so I don't need MacVim for that. (Even if I did open files that way, I could make a wrapper that would start console Vim.)
  • At least two terminal emulators on the Mac now have well-functioning fullscreen modes corresponding to "Non-native", aka., Tiger fullscreen, so I don't need MacVim for that.
  • Console Vim now supports truecolor, so MacVim has no colorscheme advantage.
  • I don't need to drag-n-drop anything onto MacVim, so I don't miss that when using console Vim.
  • Etc.

@ychin
Copy link
Member

ychin commented Aug 9, 2022

Sure @chdiza no problem I always want to hear what drives people to/away from MacVim. But yes how much value you derive from MacVim depends on whether it's the GUI part, or just the "not sucky terminal emulator" part of MacVim that entices you. To me, it was the "GUI of Vim" part that made me start using MacVim.

MacVim does have the ability to do a lot more system integration, such as fully utilizing the Touch Bar or trackpad. There are also some features in progress (with different degrees of doneness) that are difficult to do on a terminal emulator due to the limits of the process boundary (e.g. overlaid scrollbars, smooth pixel scrolling, proper Option-key handling/mapping that would deprecate macmeta).

But feel free to use whatever fits your needs. If there's any reason why you think terminal Vim is actually better than MacVim in terms of functionality though I'm curious to hear about it.


But on the topic of supporting old versions of OSes, I hear you. I do want to support older versions as much as we can. Sometimes it could get tricky due to API incompatibility (old APIs go from supported to deprecated to removed), and it's difficult to test them in CI. But as long as there are no forcing functions that would force us to bump that number I don't plan to do so (Sparkle 1 still seems supported for now, but the upgrade to Sparkle 2 would probably one of the few reasons we would have to upgrade, unless we want to ship a separate binary that doesn't come with Sparkle updater).

ychin added a commit to ychin/macvim that referenced this issue Aug 9, 2022
This fixes MacVim to work again on OSX 10.9. It was previously crashing
on launch for last few versions.

titlebarAppearsTransparent call: This API was added in 10.10, and
previously MacVim wasn't properly guarding it with the proper OS version
check, causing it to crash under 10.9 (which is the lowest currently
supported macOS version).

CGContext call: The new stateful renderer is using a newer API to
retrieve the CGContext from the NS wrapper, but that was also only added
in 10.10. When compiling against older versions, just use the older,
now-deprecated API "graphicsPort" instead. It works the same way.

Also, change the version check for `safeAreaInsets` for non-native full
screen to use @available as well instead of checking for selector. This
is more consistent with how other code works and fixes a compiler
warning about not checking for OS version.

Fix macvim-dev#1212
ychin added a commit to ychin/macvim that referenced this issue Aug 9, 2022
This fixes MacVim to work again on OSX 10.9. It was previously crashing
on launch for last few versions.

titlebarAppearsTransparent call: This API was added in 10.10, and
previously MacVim wasn't properly guarding it with the proper OS version
check, causing it to crash under 10.9 (which is the lowest currently
supported macOS version).

CGContext call: The new stateful renderer is using a newer API to
retrieve the CGContext from the NS wrapper, but that was also only added
in 10.10. When compiling against older versions, just use the older,
now-deprecated API "graphicsPort" instead. It still works.

Also, change the version check for `safeAreaInsets` for non-native full
screen to use @available as well instead of checking for selector. This
is more consistent with how other code works and fixes a compiler
warning about not checking for OS version.

Fix macvim-dev#1212
ychin added a commit to ychin/macvim that referenced this issue Aug 9, 2022
This fixes MacVim to work again on OSX 10.9. It was previously crashing
on launch for last few versions.

titlebarAppearsTransparent call: This API was added in 10.10, and
previously MacVim wasn't properly guarding it with the proper OS version
check, causing it to crash under 10.9 (which is the lowest currently
supported macOS version).

CGContext call: The new stateful renderer is using a newer API to
retrieve the CGContext from the NS wrapper, but that was also only added
in 10.10. When compiling against older versions, just use the older,
now-deprecated API "graphicsPort" instead. It still works.

Also, change the version check for `safeAreaInsets` for non-native full
screen to use `@available` as well instead of checking for selector.
This is more consistent with how other code works and fixes a compiler
warning about not checking for OS version.

Fix macvim-dev#1212
@ychin
Copy link
Member

ychin commented Aug 9, 2022

Ok have a PR up which fixes this issue. I tested on a 10.9 VM and seems to work, and you can launch and use MacVim again.

One issue that I found: native full screen doesn't seem to work: the Vim window would not resize properly and not take up the whole screen. Non-native full screen still works just fine though. This honestly feels a little like a niche case to me, and unless there is strong desire expressed here it's unlikely I'll fix that, since even just 10.13 seems to handle the native full screen transition just fine. The full screen API and MacVim's handling of it is a alway kind of convoluted and I would much rather spend my time on fixing other issues.

@chuchana
Copy link

chuchana commented Aug 9, 2022

Great! I actually prefer the non-native full screen mode because I find the native animations annoying and I like using [cmd] + [h] to hide the current program.

@chdiza
Copy link
Contributor

chdiza commented Aug 9, 2022

Native fullscreen mode, a.k.a., Lion-mode, is an abomination :)

@chdiza
Copy link
Contributor

chdiza commented Aug 9, 2022

@ychin I don't think there's anything on which console Vim outperforms MacVim. (I mean, other than startup, but that's just the nature of a GUI.) MacVim does outperform the most popular other gVim, namely the GTK3 build on linux. (It's so laggy as to be unusable and I build the GTK2 version instead.)

@ychin
Copy link
Member

ychin commented Aug 10, 2022

Actually, if you use iTerm2, it supports modifyOtherKeys, which MacVim doesn't support yet (but it will soon). Anyway maybe we should stay on topic lol.

ychin added a commit that referenced this issue Sep 15, 2022
Updated to Vim 9.0.472.

Announcements
====================

Sponsors
--------------------

MacVim now allows you to sponsor the team! Any amount would be
appreciated and it is of course optional. See the announcement (#1271)
for more details.

Supporting old versions of macOS (10.12 or below)
--------------------

Currently, macOS supports macOS 10.9 or above. However, this is getting
harder to do so as time goes on (e.g. the latest Xcode doesn't support
building for it). In the near future, MacVim will mostly target 10.13
(High Sierra) or above, with 10.9 - 10.12 as legacy support. Visit this
discussion (#1288) if you would be affected and would like to know more.

Features
====================

Resizing MacVim new options
--------------------

You can now smoothly drag and resize MacVim without having it
constrained to fixed multiples of the text size, by setting the
"Smoothly resizes window" under General preference pane. This also
allows MacVim to behave better when used with third-party tools (e.g.
BetterSnapTool) to snap it to one side of the screen. #1276

The command line can now be pinned to the bottom of the window with a
setting (under Appearance preference pane). This makes it look better
aligned when using smooth resizing, or in other situations where the
window size is not a direct multiples of Vim's text size (e.g. full
screen or guioption+=k). #1280

New supported text styles
--------------------

Vim highlight groups `strikethrough`, `underdouble`, `underdotted`,
`underdashed` are now supported. #1287

New Vim features
--------------------

Virtual text allows you to place custom texts to be displayed inline for
diagnostic information and more (e.g. build errors, CSS color preview).
See `:help virtual-text` for more information.

The default color schemes (e.g. desert) are now fixed to look correct
again.

Misc options and commands:
- `set nosplitscroll` lets you preserve the windows' scroll positions
  when splitting. (v9.0.0445)
- `:defer` allows you to clean up in a function. (v9.0.0370)
- `:echowindow` allows you to echo a message to a floating popup message
  window instead of to the command line. (v9.0.0321)

Fixes
====================

- Fixed non-native full screen not working well with the notch on newer
  MacBook's when set to not show menu bar. You can also use
  `MMNonNativeFullScreenSafeAreaBehavior` to force MacVim to use the
  notch area as well if you don't mind some content being obscured. #1261
- Fixed bad interaction when two settings ("Open untitled window: never"
  and "After last window closes: Quit MacVim") are set together. #1257
- Fixed the bundled Vim tutor not working when launching from the Help
  menu #1265.
- Fix crashing on launch under macOS 10.9. #1212
- Fixed potential crash when switching appearance mode in MacVim
  preferences. #1270
- Korean localized menus no longer throw a syntax error on launch. #1278
- `did_install_default_menus` should work in MacVim now. #1267

General
====================

Sparkle (updater for MacVim) is now updated to 1.27.1 (#1284), and we no
longer use DSA keys for signing updates (#1285) as we are using EdDSA
already.

Scripting
====================

- Scripting languages versions:
    - Python is now built against 3.10, up from 3.9.

Compatibility
====================

Requires macOS 10.9 or above.

Script interfaces have compatibility with these versions:

- Lua 5.4
- Perl 5.18
- Python2 2.7
- Python3 3.10
- Ruby 3.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants