-
Notifications
You must be signed in to change notification settings - Fork 14
/
emacs-mac.rb
143 lines (120 loc) · 4.64 KB
/
emacs-mac.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
139
140
141
142
143
class EmacsMac < Formula
homepage "https://www.gnu.org/software/emacs/"
head "https://bitbucket.org/mituharu/emacs-mac.git", :branch => "work"
url "https://bitbucket.org/mituharu/emacs-mac/get/emacs-25.1-mac-6.0.tar.gz"
sha256 "5152b6cc403914c6333a677faf28247a98c1126c95382665b228113840ac3dfe"
version "emacs-25.1-z-mac-6.0"
depends_on "autoconf" => :build
depends_on "automake" => :build
depends_on "pkg-config" => :build
option "with-dbus", "Build with d-bus support"
option "with-modules", "Build with dynamic modules support"
option "with-xml2", "Build with libxml2 support"
option "with-ctags", "Don't remove the ctags executable that emacs provides"
option "with-official-icon", "Using offical Emacs icon"
option "with-modern-icon", "Using a modern style Emacs icon by @tpanum"
option "with-spacemacs-icon", "Using the spacemacs Emacs icon by Nasser Alshammari"
# Update list from
# https://raw.githubusercontent.com/emacsfodder/emacs-icons-project/master/icons.json
@@emacs_icons_project_icons = [
"EmacsIcon1",
"EmacsIcon2",
"EmacsIcon3",
"EmacsIcon4",
"EmacsIcon5",
"EmacsIcon6",
"EmacsIcon7",
"EmacsIcon8",
"EmacsIcon9",
"emacs-card-blue-deep",
"emacs-card-british-racing-green",
"emacs-card-carmine",
"emacs-card-green"
]
@@emacs_icons_project_icons.each do |icon|
option "with-emacs-icons-project-#{icon}", "Using Emacs icon project #{icon}"
end
deprecated_option "keep-ctags" => "with-ctags"
deprecated_option "icon-official" => "with-official-icon"
deprecated_option "icon-modern" => "with-modern-icon"
depends_on "d-bus" if build.with? "dbus"
depends_on "glib" => :optional
depends_on "gnutls" => :optional
depends_on "imagemagick" => :optional
depends_on "libxml2" if build.with? "xml2"
# Apply patch to support 24-bit colors in a terminal.
patch :p0 do
url "https://gist.githubusercontent.com/choppsv1/3364fd6658ef498b5e06151217187017/raw/5ca5dc1d6218c6d28c09172e77eec79f3c31a97e/emacs-25.1-24bit.diff"
sha256 "53caad04aa6cb64fade9fedf6289185e3ddf33beeec41b216761f10f9f3386d5"
end
def caveats
<<-EOS.undent
This is YAMAMOTO Mitsuharu's "Mac port" addition to
GNU Emacs 25. This provides a native GUI support for Mac OS X
10.6 - 10.12. After installing, see README-mac and NEWS-mac
in #{prefix} for the port details.
Emacs.app was installed to:
#{prefix}
To link the application to default Homebrew App location:
brew linkapps
or:
ln -s #{prefix}/Emacs.app /Applications
Other ways please refer:
https://github.com/railwaycat/homebrew-emacsmacport/wiki/Alternative-way-of-place-Emacs.app-to-Applications-directory
For an Emacs.app CLI starter, see:
https://gist.github.com/4043945
EOS
end
# Follow Homebrew and don't install ctags from Emacs. This allows Vim
# and Emacs and exuberant ctags to play together without violence.
def do_not_install_ctags
if build.without? "ctags"
(bin/"ctags").unlink
(share/man/man1/"ctags.1.gz").unlink
end
end
def emacs_icons_project_uri(icon)
"https://raw.githubusercontent.com/emacsfodder/emacs-icons-project/master/#{icon}.icns"
end
def install
args = [
"--enable-locallisppath=#{HOMEBREW_PREFIX}/share/emacs/site-lisp",
"--infodir=#{info}/emacs",
"--prefix=#{prefix}",
"--with-mac",
"--enable-mac-app=#{prefix}",
]
args << "--with-modules" if build.with? "modules"
# icons
icons_dir = "./mac/Emacs.app/Contents/Resources"
official_icons = "https://s3.amazonaws.com/emacs-mac-port/Emacs25.icns"
modern_icons = "https://s3.amazonaws.com/emacs-mac-port/Emacs.icns.modern"
spacemacs_icons = "https://github.com/nashamri/spacemacs-logo/blob/master/spacemacs.icns?raw=true"
@@emacs_icons_project_icons.each do |icon|
if build.with? "emacs-icons-project-#{icon}"
rm "#{icons_dir}/Emacs.icns"
curl emacs_icons_project_uri(icon), "-o", "#{icons_dir}/Emacs.icns"
end
end
if build.with? "official-icon"
rm "#{icons_dir}/Emacs.icns"
curl "#{official_icons}", "-o", "#{icons_dir}/Emacs.icns"
elsif build.with? "modern-icon"
rm "#{icons_dir}/Emacs.icns"
curl "#{modern_icons}", "-o", "#{icons_dir}/Emacs.icns"
elsif build.with? "spacemacs-icon"
rm "#{icons_dir}/Emacs.icns"
curl "-L", "#{spacemacs_icons}", "-o", "#{icons_dir}/Emacs.icns"
end
# build
system "./autogen.sh"
system "./configure", *args
system "make"
system "make", "install"
# Don't cause ctags clash.
do_not_install_ctags
end
test do
system "emacs", "--batch"
end
end