-
-
Notifications
You must be signed in to change notification settings - Fork 12.1k
/
vim.rb
138 lines (118 loc) 路 5.23 KB
/
vim.rb
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
class Vim < Formula
desc "Vi \"workalike\" with many additional features"
homepage "http://www.vim.org/"
url "https://github.com/vim/vim/archive/v8.0.0577.tar.gz"
sha256 "4301a554e59951ce0079d21c51aec440613e13836c6eea7ed6d7cbd5f87a2ecf"
head "https://github.com/vim/vim.git"
bottle do
sha256 "c1d4b50c6a81c364c4e1b43ba3edc46c0a57dad415015bca6c45353f9bfa1465" => :sierra
sha256 "e40d82a6e17eba9bfe1ba4202ed48b91b9a62dac91dc43c6b3723b30ad4635e9" => :el_capitan
sha256 "e04ec33a67ff47f330dab6f563036e1ff5fbce3a7990ab617699425ba7fa8d01" => :yosemite
end
deprecated_option "override-system-vi" => "with-override-system-vi"
option "with-override-system-vi", "Override system vi"
option "with-gettext", "Build vim with National Language Support (translated messages, keymaps)"
option "with-client-server", "Enable client/server mode"
LANGUAGES_OPTIONAL = %w[lua python3 tcl].freeze
LANGUAGES_DEFAULT = %w[perl python ruby].freeze
if MacOS.version >= :mavericks
option "with-custom-python", "Build with a custom Python 2 instead of the Homebrew version."
option "with-custom-ruby", "Build with a custom Ruby instead of the Homebrew version."
option "with-custom-perl", "Build with a custom Perl instead of the Homebrew version."
end
option "with-python3", "Build vim with python3 instead of python[2] support"
LANGUAGES_OPTIONAL.each do |language|
option "with-#{language}", "Build vim with #{language} support"
end
LANGUAGES_DEFAULT.each do |language|
option "without-#{language}", "Build vim without #{language} support"
end
depends_on :python => :recommended
depends_on :python3 => :optional
depends_on :ruby => "1.8" # Can be compiled against 1.8.x or >= 1.9.3-p385.
depends_on :perl => "5.3"
depends_on "lua" => :optional
depends_on "luajit" => :optional
depends_on :x11 if build.with? "client-server"
depends_on "gettext" => :optional
conflicts_with "ex-vi",
:because => "vim and ex-vi both install bin/ex and bin/view"
def install
# https://github.com/Homebrew/homebrew-core/pull/1046
ENV.delete("SDKROOT")
ENV["LUA_PREFIX"] = HOMEBREW_PREFIX if build.with?("lua") || build.with?("luajit")
# vim doesn't require any Python package, unset PYTHONPATH.
ENV.delete("PYTHONPATH")
if build.with?("python") && which("python").to_s == "/usr/bin/python" && !MacOS::CLT.installed?
# break -syslibpath jail
ln_s "/System/Library/Frameworks", buildpath
ENV.append "LDFLAGS", "-F#{buildpath}/Frameworks"
end
opts = []
(LANGUAGES_OPTIONAL + LANGUAGES_DEFAULT).each do |language|
opts << "--enable-#{language}interp" if build.with? language
end
if opts.include?("--enable-pythoninterp") && opts.include?("--enable-python3interp")
# only compile with either python or python3 support, but not both
# (if vim74 is compiled with +python3/dyn, the Python[3] library lookup segfaults
# in other words, a command like ":py3 import sys" leads to a SEGV)
opts -= %w[--enable-pythoninterp]
end
opts << "--disable-nls" if build.without? "gettext"
opts << "--enable-gui=no"
if build.with? "client-server"
opts << "--with-x"
else
opts << "--without-x"
end
if build.with? "lua"
opts << "--enable-luainterp"
end
if build.with? "luajit"
opts << "--with-luajit"
opts << "--enable-luainterp"
end
# We specify HOMEBREW_PREFIX as the prefix to make vim look in the
# the right place (HOMEBREW_PREFIX/share/vim/{vimrc,vimfiles}) for
# system vimscript files. We specify the normal installation prefix
# when calling "make install".
# Homebrew will use the first suitable Perl & Ruby in your PATH if you
# build from source. Please don't attempt to hardcode either.
system "./configure", "--prefix=#{HOMEBREW_PREFIX}",
"--mandir=#{man}",
"--enable-multibyte",
"--with-tlib=ncurses",
"--enable-cscope",
"--with-compiledby=Homebrew",
*opts
system "make"
# Parallel install could miss some symlinks
# https://github.com/vim/vim/issues/1031
ENV.deparallelize
# If stripping the binaries is enabled, vim will segfault with
# statically-linked interpreters like ruby
# https://github.com/vim/vim/issues/114
system "make", "install", "prefix=#{prefix}", "STRIP=#{which "true"}"
bin.install_symlink "vim" => "vi" if build.with? "override-system-vi"
end
test do
if build.with? "python3"
(testpath/"commands.vim").write <<-EOS.undent
:python3 import vim; vim.current.buffer[0] = 'hello python3'
:wq
EOS
system bin/"vim", "-T", "dumb", "-s", "commands.vim", "test.txt"
assert_equal "hello python3", File.read("test.txt").chomp
elsif build.with? "python"
(testpath/"commands.vim").write <<-EOS.undent
:python import vim; vim.current.buffer[0] = 'hello world'
:wq
EOS
system bin/"vim", "-T", "dumb", "-s", "commands.vim", "test.txt"
assert_equal "hello world", File.read("test.txt").chomp
end
if build.with? "gettext"
assert_match "+gettext", shell_output("#{bin}/vim --version")
end
end
end