jordwalke / jordwalke/VimBox

Make into self-contained app [master task]

Open
#37 2 comments 1 reaction 0 assignees View on GitHub
Dominant language
Vim Script
Stars
910
Forks
68
PR merge metrics
No merged PRs in 30d

Description

If anyone is interested in working on this, please let me know. I will help you get the resources you need.

Definitely A Good Idea:

- [ ] Package a pre-built version of MacVim with Ruby/Python etc, plus the VimBox icon into a single `VimBox.app`.
- [ ] Packaged app should come with all plugins pre-downloaded, and the pre-downloaded versions would be copied into the user config directory at first startup time.
- [ ] Put all config for `VimBox` into `~/.config/vimbox/` and never override existing Vim config (or neovim config) in `~/.vim`. There should be no fear in trying VimBox, and it shouldn't mess with your existing config.
- [ ] Version all of the NeoBundle plugins so that installs are reliable (right now, everything just downloads from `master` branch on each plugin's repo). We should specify the specific branch/commit, and mirror all the out-of-box plugins on a github org so that no plugin author can remove them causing installs to fail.
- [ ] Move the upgrade workflow out of `Vim` and into another process. Since the `.app` comes with a version of all the plugins already downloaded, we don't need to interrupt the startup process to install the plugins (the only reason why it currently blocks the startup process to check for plugins is because the plugins aren't downloaded the first time you open the app). Stale plugins can be detected once the app starts up with the *last* version of the plugins, message the user that stuff's out of date, and kick off the upgrade process (possibly in a nice GUI workflow) - then app restart will make the updates take effect.
-[ ] Include and install ligature font into Mac, so that out-of-the box, airline renders correctly and ligatures look great.

Not Necessarily a Good Idea But Investigate:
- [ ] Bundle `npm`, and *use* `npm` to install all the Vim plugins. I'm not sure this is a good idea, but we could consider it. It would mean including a self-contained version of `node`! We would not be depending on `npm` the service at all because we'd list specific commit hashes of plugins, and we could mirror all of the plugins on a `VimBox` org just to make sure they'd always be available. See the benefits you'd get from using `npm`: You can automatically get a free GUI for updating plugins like `Atom` has: https://www.npmjs.com/package/npm-gui
I'm always concerned about `node/npm` getting in the startup path of Vim (I like my instant window opening capabilities of `MacVim` thank you!) so it's important that all plugin management be done out of process.
- [ ] Better/consistent/retina toolbar icons + keyboard shortcut to toggle the toolbar - these icons could be upstreamed to MacVim too, but I think we'd want specific icons for debugger integration and other VimBox specific features like (Reformat code etc).

The goal isn't to create a replacement of the MacVim download, but rather to have a one click app that people can try out so they can see what Vim (and MacVim) are capable of, but without disrupting their existing MacVim configuration.

Contributor guide

No contributing guide indexed for this repository

Research direction

This is a broad master task with no files or tests named. Start by inspecting the existing VimBox and NeoBundle setup, then break the checklist into a scoped task such as packaging VimBox.app or isolating configuration under ~/.config/vimbox/. Done should be defined separately for each checklist item, including a reproducible app build and confirmation that existing Vim configurations remain untouched.

Written by the indexing model from the issue text.

Assessment

Tech stack
node.js, python, ruby, vim
Domain
build-system, desktop, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
18/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.