Open UncleBill opened 1 year ago
Thank you for sharing
What do you mean with "MacVim doesn't reuse old instance"?
My the only guess "MacVim opens a new window", is it correct? If my guess is correct, please, look into preferences, "open from applications" and report if it's working correctly.
My the only guess "MacVim opens a new window", is it correct
Yes. That's correct.
look into preferences, "open from applications" and report if it's working correctly.
Thanks for this suggestion. I set it to "in the current window". But it might be wrong if I have multiple MacVim windows opened.
I personally prefer, that opens a new window instead of a tab or a buffer.
I set it to "in the current window". But it might be wrong if I have multiple MacVim windows opened.
Right. How would you expect the mvim://
protocol to be able to determine which window then? By servername? I could see extending the protocol handler to take in a "servername" argument (it currently only takes "line" and "column" URL arguments).
@ychin Thanks for you reply.
How would you expect the mvim:// protocol to be able to determine which window
My idea is to compare the working directories of each windows and find the closest one. For example, having three windows: WIN1
(CWD is /path/to/project1
), WIN2
(CWD is /path/to/project2
), and WIN3
(CWD is /path/to/project2/subproject/
) then
open url | result |
---|---|
mvim://open?url=file:///path/to/project1/file |
WIN1 |
mvim://open?url=file:///path/to/project2/file |
WIN2 |
mvim://open?url=file:///path/to/project1/subproject/file |
WIN3 |
By servername? I could see extending the protocol handler to take in a "servername" argument (it currently only takes "line" and "column" URL arguments).
Looks reasonable and it's explicit. Hope to see this feature implemented, and comparing working directories could be optional.
My idea is to compare the working directories of each windows and find the closest one. For example, having three windows:
WIN1
(CWD is/path/to/project1
),WIN2
(CWD is/path/to/project2
), andWIN3
(CWD is/path/to/project2/subproject/
) then
I think this could get complicated really quickly and will be very specific to an individual's workflow. First, Vim has three levels of "current directory": global (:cd
), tab-level (:tcd
), and local (:lcd
). I think a lot of the times the user may not remember which one is which. Worse is that as you switch to different windows/tabs, the "current directory" will be different as well if the user is using tab-level or local current directories.
Also, sometimes Vim users can be using CWD /a/b/c/foo
but editing /bar/some/file.txt
. I think there could be a lot of counter-intuitive behaviors for relying on things like that.
By servername? I could see extending the protocol handler to take in a "servername" argument (it currently only takes "line" and "column" URL arguments).
Looks reasonable and it's explicit. Hope to see this feature implemented, and comparing working directories could be optional.
I'm more inclined to include this option as it's explicit and allows you to structure your workflow as needed.
I'm more inclined to include this option as it's explicit and allows you to structure your workflow as needed.
OK. That will be fine. Thanks. ❤️
Greeting!
I configure
mvim://
in React Developer Tools to open file in MacVim from the browser extension.It works good, but there's a small issue. The issue is that MacVim doesn't reuse the instance that I opened if the target file hasn't been opened. For example, I launch MacVim from
/path/to/my-project
, and I open files/path/to/my-project/{a,b,c}.js
fromReact Developer Tools
. They have different results:I hope the
c.js
can be opened likea.js
andb.js
.I have a workaround in favor of
Raycast
Script Command deeplinks. My script launch MacVim with specified servername, the launched instance will be reuse if I execute the script again. Here it is (I have multiple ones generated by another script):With this script, I replace
mvim://
url withRaycast
's deeplink:It's fixed! However it would be better to have native support in MacVim.
I would suggestion to add feature to detect the instance I want to open file with (like if the opening file path is in the working directory of an instance, the closest one), or add another parameter to specified the instance.
Thanks!