public
Last active

Vim formula for Homebrew (EDIT: recent versions of official Homebrew distribution includes one)

  • Download Gist
vim.rb
Ruby
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
require 'formula'
 
class Vim < Formula
homepage 'http://www.vim.org/'
url 'ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2'
head 'https://vim.googlecode.com/hg/'
sha256 '5c5d5d6e07f1bbc49b6fe3906ff8a7e39b049928b68195b38e3e3d347100221d'
version '7.3.682'
 
def features; %w(tiny small normal big huge) end
def interp; %w(lua mzscheme perl python python3 tcl ruby) end
 
def options
[
["--with-features=TYPE", "tiny, small, normal, big or huge (default: normal)"],
["--enable-interp=NAME,...", "lua, mzscheme, perl, python, python3, tcl and/or ruby"]
]
end
 
def patches
patch_level = version.to_s.split('.').last.to_i
{'p0' => (1..patch_level).map { |i| 'ftp://ftp.vim.org/pub/vim/patches/7.3/7.3.%03d' % i }}
end
 
def install
def opt_val(opt)
opt.sub(/.*?=(.*)$/, "\\1") rescue nil
end
 
opts = []
feature = opt_val(ARGV.find {|s| s =~ /^--with-features=/ }) || "normal"
# For compatibility and convenience {{{
feature_shorthand = features.find {|f| ARGV.include? "--#{f}" }
feature = feature_shorthand if feature_shorthand
# }}}
opts << "--with-features=#{feature}"
 
interps = opt_val(ARGV.find {|s| s =~ /^--enable-interp=/ }) || ""
interps = interps.split(/,/)
# For compatibility and convenience {{{
interp.each do |i|
if ARGV.include? "--#{i}"
interps << i
end
end
# }}}
interps.uniq!
interps.each do |i|
opts << "--enable-#{i}interp=yes"
opts << "--with-lua-prefix=/usr/local" if i == "lua"
end
 
system "./configure",
"--disable-gui",
"--without-x",
"--disable-gpm",
"--disable-nls",
"--with-tlib=ncurses",
"--enable-multibyte",
"--prefix=#{prefix}",
"--mandir=#{man}",
*opts
system "make install"
end
end

To install this formula, right-click 'raw' at the top-right corner of the text area, copy URL, and run the following command:

brew install https://raw.github.com/gist/721952/vim.rb --HEAD [options]

Options are:

--HEAD                     (check out the most recent source code from repo; recommended)
--with-features=<TYPE>     (--<TYPE> for short)
--enable-interp=<NAME>,... (--<NAME> for short)

This works great, thx!

Would be great if the options allowed for enabling the interpreters (python, perl, ruby, etc.).

Added interp options.

If you want finer control, you should run ./configure for yourself :)

Perplexed why this wasn't working by default!

Working great, cheers.

I can no longer get this to work for me. I get the following error:

Error: undefined method `include' for ["--", "--big", "--python", "--ruby", "--perl"]:Array

It worked before, but now it doesn't. Any idea why?

@claytron

Thanks for reporting the bug. Fixed typo.

Works again, thx!

Thank you :) Vim is my choice of editor and this really helps me stay up to date.

Just wanted to let you know this does not pass brew audit.

vim:
 * Option --tiny is unused
 * Option --small is unused
 * Option --normal is unused
 * Option --big is unused
 * Option --huge is unused

Is there any way possible to "fix" this?

I have a quick question: shouldn't the features option be more like this?

"--with-features=#{feature}"

Also, in order to build Lua, --enable-luainterp needs help. You also need --with-lua-prefix=/usr/local and (more importantly), I think you need to manually download the static library that Vim needs to build against and install it in /usr/local/lib. See these links for more details:

@MindTooth

Thanks, made a workaround for that.

@telemachus

Now uses --with-features= option. Thanks.
Also added --with-lua-prefix=/usr/local for Lua.

Thank you for updating ;)

Thank you! Is there are a reason this isn't available directly in homebrew? Works great here!

The policy of Homebrew is to not include system duplicates.

@shapeshed

Homebrew doesn't accept "duplicate" formulae; see Acceptable Formula.

Update (64bbe5..b1cf39):

Added head URL, tidied up options, and purged nasty workarounds.
Now you don't have to fork this formula only to bump patchlevel; use --HEAD instead!

Vote to make vim exempt!

.143 is released ;)

Updated, thanks.

Maybe I could suggest that you submit this to the homebrew-alt repo?

Thank you for updating ;)

7.3.146 is released ;)

7.3.144 crash with ":python help(dir)"

7.3.145 (after 7.3.144) can't build with Python dynamically loading

7.3.146 can assign to dict member with invalid name

Can't you make the patchlevel def read from the version tag? I'm not know with Ruby, so I can't help out. But that would be much easier, than updating the same info two places :)

I've tweaked my fork and updated it: https://gist.github.com/896531
161 is relased as well.

@MindTooth

Thanks, merged your work :)

Maybe I could suggest that you submit this to the homebrew-alt repo?

homebrew(-alt) seems to prefer a formula that comes with a recommended configuration.
This one is bit too configurable for them, I think.

Any suggestions on how to make this compile with a Ruby version from RVM? I'm a bit stuck atm.

@MindTooth I've never been able to get that to work. I simply turn off rvm temporary (rvm use system), then build vim, then turn rvm back on.

If it makes you feel any better, Vim simply ignores my Homebrew-installed Python (even though it's first in my $PATH). So it's not just Ruby.

Thank you for the tip. It did the trick!

I hope that we can provide something for the future at a later time ;) Will look into it more whenever I have the time and the knowledge to do so.

7.3.170 is released ;)

@MindTooth

Thanks :)

Added head URL, which had been removed accidentally.

7.3.177 is released ;)

So has anyone been able to get this to work with hombrew-installed Python? Need to find a solution here, since I'd prefer to use Python 3.

Not necessarily. Ultimately I want to compile vim with support for my Homebrew installed Python version and not the default Python shipped with Mac OS X. (Whether 2 or 3 isn't that big a deal, though I was hoping to port existing python plugins to 3).

http://forums.freebsd.org/showthread.php?t=22962

What I found out now is, that for compiling vim with Python3-support, the python header files are needed. For Ubuntu, they are in the package python-dev, but there is no python-dev in the ports. After using google, it seems that a file named python.h is needed, but there is no python.h on my system and I don't know where to get it.

Seems like you need to the header file. Or am I mistaken?

Sorry, I am not being clear, for example, using the formula above, if I brew install with python, then add:

python <<EOF
import sys
print(sys.version)
EOF

to my .vimrc, it says I am using the Python shipped with Snow Leopard.

I've hardcoded the following into the formula and it still doesn't work:

  "--enable-pythoninterp=yes",
  "--with-python-config-dir=/usr/local/lib/python2.7/config",

Any ideas how to get this forumla to see it? I am going to keep hacking around, but thus far I have yet to find a solution.

Just a note for anyone using this now - there seems to be a problem with one of the patches: https://groups.google.com/group/vim_dev/msg/4ecb0d64e2c0dc5d

I just removed the patch method for now to get it installed.

Thanks for writing this! The system Vim is missing a lot of stuff I depend on.

Fyi: I've been using a variant of this for a few months with good success: https://gist.github.com/1027452.

The only significant difference is that I leverage Mercurial in order to avoid downloading all the patches separately each time. In order to update it, I simply edit the :revision and version numbers.

@telemachus Thanks, that will reduce build time and server load!

(As a side note, I've chosen not to use Mercurial to fetch a specific version of Vim because:

  1. it is possible to skip specific (maybe flawed) patches by modifying the patches method,
  2. you can always use --HEAD to fetch the most recent revision with Mercurial, like brew install vim --HEAD, and
  3. I love a coffee break watching growing 300+ progress bars ;-)

I got the error:
/usr/bin/patch: **** Can't open patch file 065-homebrew.diff : No such file or directory
Error: Failure while executing: /usr/bin/patch -f -p0 -i 065-homebrew.diff

I made a slight modification to the fork by telemachus to make using the homebrew python easy https://gist.github.com/2402135

when you use --use-brew-python flag it will add the option "--with-python-config-dir=/usr/local/lib/python2.7/config"

This is just for my understanding. Why not just use MacVim? I run MacVim on OS X in my terminal with a simple alias, but also get the option to run it as a full windowed app.

in my .bashrc

alias vim="mvim -v"
alias vi="mvim -v"

Is there something I'm missing about MacVim vs Vim?

Thanks.

Vim is updated more often than MacVim from my understanding at least.

I didn't know you could do that. Thanks.

On Apr 20, 2012, at 1:09 PM, "Michael D. Hall"
reply@reply.github.com
wrote:

This is just for my understanding. Why not just use MacVim? I run MacVim on OS X in my terminal with a simple alias, but also get the option to run it as a full windowed app.

in my .bashrc

alias vim="mvim -v"
alias vi="mvim -v"

Is there something I'm missing about MacVim vs Vim?

Thanks.


Reply to this email directly or view it on GitHub:
https://gist.github.com/721952

@uasi ここの version 、一旦 to_s しないとエラー出るようになってるっぽいですよ。

patch_level = version.split('.').last.to_i

latest version of brew does not allow split directly, use to_s like in this: https://gist.github.com/3423922

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.