[swift-dev] Swift vim support

Ted kremenek kremenek at apple.com
Fri Jan 8 00:02:22 CST 2016

Hi Keith,

My apologies for the delayed response.  I had a few conversations with members of Swift Core and others about their thoughts here.  We're treading into new ground, so some of this we are figuring out as we go.

Having great support for vim is something we want for the Swift project.  The same goes for the multitude of other editors and IDEs out there (both open source and proprietary).  The question that got brought up in my conversations is whether or not we should look to host support for each of those as sibling repositories in GitHub next to swift, swift-package-manager, etc., or should we take the route of having them hosted elsewhere and not directly part of the Swift.org project?  Taking the latter route could still mean acknowledging a particular plugin for (say) vim is the recommended and maintained plugin for Swift support for vim (or whatever editor).

The problem is where to draw the line on what is part of Swift.org and what is not.  The entire Swift ecosystem does not need to be part of the Swift project directly, nor conceivably could it ever be.  The existing vim support in the swift repository predates open source.  It was put there by a member of Apple's Swift team because he was interested in using vim, and that was a natural place to put it.  Now that Swift is open source the repository goes beyond just serving the needs of a relatively small number of individuals.  There will be a natural interest from the community at large to add editor support for other popular editors, and the question is whether or not they should all be positioned as sibling repositories to swift.

My instinct at this point tells me "no", simply because we want an open ecosystem for Swift stuff that goes beyond just what is in the core Swift project.  This allows the core Swift project to focus more on fostering an ecosystem of tools, and provide a few core technologies like the compiler and package manager, rather than focusing on providing everything in the Swift universe.  That said, even drawing this line is not always clear.

With this in mind, I propose an alternate direction (for which I encourage discussion):

- Remove the current support from vim from the swift repository.
- Encourage others to setup great vim support on GitHub.
- Call out such great vim support with links from the swift repository or Swift.org itself.

Thoughts?  The same arguments here apply to editors like Emacs, Sublime Text, and so on.


> On Jan 3, 2016, at 8:26 PM, Keith Smiley <keithbsmiley at gmail.com> wrote:
> Awesome thanks! I'd definitely be interested in helping maintain this plugin. I can't speak for Kevin but I assume he would be as well.
>> On Sun, Jan 3, 2016 at 20:21 Ted kremenek <kremenek at apple.com> wrote:
>> Hi Keith,
>> This makes complete sense.  I can see why cloning a small self-contained repository would be ideal for plugin managers.
>> I'll talk about this with the core team, but I think this seems like a reasonable direction.
>> Incidentally, we would need one (or more) active maintainers for the vim plugin.  Dmitri Gribenko was the one on Apple's Swift team most actively using vim, but I'd also be happy with somebody outside of Apple being the custodian of this plugin.
>> Ted
>>> On Jan 3, 2016, at 10:37 AM, Keith Smiley <keithbsmiley at gmail.com> wrote:
>>> Right there are 2 facets to the file hierarchy. The one covered in [2] is the
>>> standard structure vim expects when loading plugins. The need to be in a
>>> separate repo is for vim plugin managers.
>>> The most popular plugin managers[0][1][2] work by either you cloning, or
>>> specifying a repo containing a plugin to load. This means you would use
>>> something like `apple/swift.vim` in the case of the plugin I'm hoping for. The
>>> plugin managers then add that cloned directory to vim's runtime path where it
>>> looks for the structure covered in [2] to be able to load the correct plugin
>>> files. If that structure doesn't exist at the root of the repo, it has no
>>> effect. Some of the plugin managers[2] do have the ability to specify the
>>> subdirectory of a repo, but even if that was something we were relying on,
>>> having to clone the entire `apple/swift` repo for less than ~10 small files is
>>> a lot of overhead.
>>> Let me know if I need to elaborate more.
>>> Thanks!
>>> [0]: https://github.com/tpope/vim-pathogen
>>> [1]: https://github.com/VundleVim/Vundle.vim
>>> [2]: https://github.com/junegunn/vim-plug
>>> --
>>> Keith Smiley
>>>> On 01/02, Ted kremenek wrote:
>>>> > Hi Keith,
>>>> >
>>>> > I'm not a vim user, so I'm not certain how the nesting of the vim support in the main repository is a problem.  I looked at [2] and noticed a requirement for a folder layout, but I didn't see anything obvious to indicate that this would benefit from being in a separate repository.  Can you elucidate a bit more for my benefit?  Note that I'm not saying there is a benefit; I'm just lacking some context here to understand why a separate repository is needed.  If there is a clear benefit, this is something I'd happily support and discuss with the rest of the Swift Core members.
>>>> >
>>>> > Ted
>>>> >
>>>> > > On Dec 31, 2015, at 12:09 PM, Keith Smiley via swift-dev <swift-dev at swift.org> wrote:
>>>> > >
>>>> > > Hey all,
>>>> > >
>>>> > > When swift was open sourced a few of us noticed that there was some existing
>>>> > > vim highlighting support[0]. While it sounds like what's there now hasn't been
>>>> > > kept up to date for a while[1], that brought up the question if there could
>>>> > > ever be a dedicated repository for vim support under the apple github
>>>> > > organization.
>>>> > >
>>>> > > Many vim plugin managers expect a specific folder structure[2] in order to
>>>> > > work correctly. So the current nesting of the vim support in the main repo
>>>> > > isn't ideal. I think it would be hugely beneficial to the members of the
>>>> > > community who would prefer to use vim over any other editor, for there to be a
>>>> > > first party repo similar to rust's[3].
>>>> > >
>>>> > > I'm not particularly suggesting that this plugin would be supported by the
>>>> > > swift core team. As there are at least a few community swift vim plugins
>>>> > > now[4][5] I would hope that as a community we would be willing and able to
>>>> > > support this plguin. Personally I would love to be part of a unified effort
>>>> > > towards better vim support for Swift!
>>>> > >
>>>> > >
>>>> > > Thoughts? Thanks!
>>>> > >
>>>> > >
>>>> > > [0]: https://github.com/apple/swift/tree/master/utils/vim
>>>> > > [1]: https://twitter.com/jckarter/status/672493376856391681
>>>> > > [2]: https://robots.thoughtbot.com/writing-vim-syntax-plugins
>>>> > > [3]: https://github.com/rust-lang/rust.vim
>>>> > > [4]: https://github.com/keith/swift.vim
>>>> > > [5]: https://github.com/kballard/vim-swift
>>>> > >
>>>> > > --
>>>> > > Keith Smiley
>>>> > >
>>>> > > _______________________________________________
>>>> > > swift-dev mailing list
>>>> > > swift-dev at swift.org
>>>> > > https://lists.swift.org/mailman/listinfo/swift-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160107/fae65da8/attachment.html>

More information about the swift-dev mailing list