Awesome Open Source
Awesome Open Source
Sponsorship

#+begin_html

Banner

Emacs Plus

Emacs 26 CI Status Badge Emacs 27 CI Status Badge Emacs 28 CI Status Badge

#+end_html

** About

#+begin_html Screenshot #+end_html

Emacs Plus is [[https://www.gnu.org/software/emacs/emacs.html][→ GNU Emacs]] formulae for macOS [[https://brew.sh][→ Homebrew]] package manager. It offers a wide rage of extra functionality over regular [[https://formulae.brew.sh/formula/emacs#default][→ Emacs]] package. Emacs Plus intent is to give the most of 'plus' stuff by default, leaving only controversial options as opt-in. Please refer to [[#options][→ Options]] section for more information.

#+begin_src bash $ brew tap d12frosted/emacs-plus $ brew install emacs-plus [options] # install the latest release (Emacs 27) $ brew install [email protected] [options] # install Emacs 26 $ brew install [email protected] [options] # install Emacs 27 $ brew install [email protected] [options] # install Emacs 28 #+end_src

Feel free to open an issue or contact me via email if you face any issues, questions or feature requests. I love pull requests, so do send them. You might want to check [[docs/development-guidelines.org][→ Development guidelines]] to have better understanding on how to contribute.

** Table of Contents :TOC_3:

  • [[#about][About]]
  • [[#install][Install]]
  • [[#reinstall][Reinstall]]
  • [[#emacs-26-options][Emacs 26 options]]
  • [[#emacs-27-and-emacs-28-options][Emacs 27 and Emacs 28 options]]
    • [[#no-titlebar][No Titlebar]]
    • [[#xwidgets-webkit][Xwidgets (webkit)]]
    • [[#system-appearance-change][System appearance change]]
  • [[#icons][Icons]]
  • [[#emacs-configuration][Emacs configuration]]
  • [[#known-issues][Known Issues]]
    • [[#emacs-dependency-in-other-formulas][=emacs= dependency in other formulas]]
  • [[#screenshots][Screenshots]]
  • [[#acknowledgements][Acknowledgements]]

** Install

Emacs Plus contains separate formulas for different Emacs versions:

  • =emacs-plus= install current release version (Emacs 27);

  • [email protected]= install Emacs 26, previous release version;

  • [email protected]= install Emacs 27, current release version;

  • [email protected]= install Emacs 28, development version.

    #+begin_src bash $ brew tap d12frosted/emacs-plus $ brew install emacs-plus [options] # install the latest release (Emacs 27) $ brew install [email protected] [options] # install Emacs 26 $ brew install [email protected] [options] # install Emacs 27 $ brew install [email protected] [options] # install Emacs 28 #+end_src

By default (without any addition options) this formula install Cocoa version of Emacs with support of =gnutls=, =imagemagick=, =librsvg=, =libxml2=, dynamic modules and multicolor fonts. Please see the list of available options to disable any bit of default behaviour or add even more stuff.

** Reinstall

If you wish to reinstall =emacs-plus= with new options you should not use =reinstall= command of =brew= (not related to this formula, it's a general advice). Instead, you should =uninstall= a package and then install it with new set of arguments.

#+BEGIN_SRC bash $ brew uninstall emacs-plus $ brew install emacs-plus [options] #+END_SRC

** Emacs 26 options

Emacs 26 comes without any available options due to [[https://github.com/d12frosted/homebrew-emacs-plus/issues/195][→ #195]].

** Emacs 27 and Emacs 28 options

| Option | Description | |---------------------------+------------------------------------------------------------------------------| | =--with-ctags= | don't remove the ctags executable that Emacs provides | | =--with-dbus= | build with dbus support | | =--with-debug= | build with debug symbols and debugger friendly optimizations | | =--with-mailutils= | build with mailutils support | | =--with-no-frame-refocus= | disables frame re-focus (ie. closing one frame does not refocus another one) | | =--with-no-titlebar= | build [[#no-titlebar][→ without titlebar]] | | =--with-x11= | build with x11 support | | =--with-xwidgets= | build [[#xwidgets-webkit][→ with xwidgets]] support | | =--without-cocoa= | build a non-Cocoa version of Emacs (terminal only) | | =--without-imagemagick= | build without =imagemagick= support | | =--HEAD= | build from =emacs-27= branch (only for [email protected]=) |

By default =emacs-plus= builds the Cocoa version of Emacs.

=emacs-plus= unconditionally enables support for =gnutls=, =librsvg=, =libxml2=, =little-cms2= and dynamic modules.

*** No Titlebar

This patch is enabled with the =--with-no-titlebar= option. It is meant for use with window tiling applications like [[https://github.com/koekeishiya/yabai][→ yabai]], [[https://github.com/koekeishiya/chunkwm][→ chunkwm]] or [[https://github.com/ianyh/Amethyst][→ amethyst]] so that the titlebar you will never need to click on won't take up screen real estate. If you see gaps between your emacs frames and other windows, try this:

#+BEGIN_SRC emacs-lisp (setq frame-resize-pixelwise t) #+END_SRC

*** Xwidgets (webkit)

Browse the web in Emacs as in modern browser.

The original [[https://www.emacswiki.org/emacs/EmacsXWidgets][→ Emacs xwidgets]] builds and works on macOS however must be used with X11 and hence not practical option on macOS. This version enables =xwidgets= on native macOS Cocoa via embedding a native webkit window.

More details can be seen here [[https://github.com/veshboo/emacs][→ Veshboo's emacs branch]].

*** System appearance change

This patch is enabled by default and can't be disabled. It adds a hook, =ns-system-appearance-change-functions=, that is called once the system appearance is changed. Functions added to this hook will be called with one argument, a symbol that is either =light= or =dark=. This mainly allows loading a different theme to better match the system appearance.

#+begin_src emacs-lisp (add-hook 'ns-system-appearance-change-functions #'(lambda (appearance) (mapc #'disable-theme custom-enabled-themes) (pcase appearance ('light (load-theme 'tango t)) ('dark (load-theme 'tango-dark t))))) #+end_src

Note that this hook is also run once when Emacs is initialized, so simply adding the above to your =init.el= will allow matching the system appearance upon startup. The hook is NOT run in TTY Emacs sessions.

** Icons

| Option | Author | Image | URL | |-----------------------------------------------+----------------------------+------------------------------------------------+---------| | =--with-spacemacs-icon= | [[https://github.com/nashamri][→ Nasser Alshammari]] | [[/icons/spacemacs_128.png]] | [[https://github.com/nashamri/spacemacs-logo][→ Link]] | | =--with-gnu-head-icon= | [[https://github.com/aurium][→ Aurélio A. Heckert]] | [[/icons/gnu-head_128.png]] | [[https://www.gnu.org/graphics/heckert_gnu.html][→ Link]] | | =--with-EmacsIcon1-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon1_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon2-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon2_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon3-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon3_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon4-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon4_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon5-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon5_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon6-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon6_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon7-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon7_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon8-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon8_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-EmacsIcon9-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/EmacsIcon9_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-emacs-card-blue-deep-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/emacs-card-blue-deep_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-emacs-card-british-racing-green-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/emacs-card-british-racing-green_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-emacs-card-carmine-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/emacs-card-carmine_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-emacs-card-green-icon= | [[https://github.com/jasonm23][→ Jason Milkins]] | [[/icons/emacs-card-green_128.png]] | [[https://github.com/emacsfodder/emacs-icons-project][→ Link]] | | =--with-modern-icon= | Unknown | [[/icons/modern_128.png]] | Unknown | | =--with-modern-cg433n-icon= | [[https://github.com/cg433n][→ cg433n]] | [[/icons/modern-cg433n.png]] | [[https://github.com/cg433n/emacs-mac-icon][→ Link]] | | =--with-modern-sjrmanning-icon= | [[https://github.com/sjrmanning][→ sjrmannings]] | [[/icons/modern-sjrmanning.png]] | [[https://github.com/sjrmanning/emacs-icon][→ Link]] | | =--with-modern-sexy-v1-icon= | [[https://emacs.sexy][→ Emacs is Sexy]] | [[/icons/modern-sexy-v1.png]] | [[https://emacs.sexy][→ Link]] | | =--with-modern-sexy-v2-icon= | [[https://emacs.sexy][→ Emacs is Sexy]] | [[/icons/modern-sexy-v2.png]] | [[https://emacs.sexy][→ Link]] | | =--with-modern-papirus-icon= | [[https://github.com/PapirusDevelopmentTeam][→ Papirus Development Team]] | [[/icons/modern-papirus.png]] | [[https://github.com/PapirusDevelopmentTeam/papirus-icon-theme][→ Link]] | | =--with-modern-pen-icon= | [[https://github.com/nanasess][→ Kentaro Ohkouchi]] | [[/icons/modern-pen.png]] | [[https://github.com/nanasess/EmacsIconCollections][→ Link]] | | =--with-modern-black-variant-icon= | [[https://www.deviantart.com/blackvariant/about][→ BlackVariant]] | [[/icons/modern-black-variant.png]] | [[https://www.deviantart.com/blackvariant][→ Link]] | | =--with-modern-nuvola-icon= | [[https://en.wikipedia.org/wiki/David_Vignoni][→ David Vignoni]] | [[/icons/modern-nuvola.png]] | [[https://commons.wikimedia.org/wiki/File:Nuvola_apps_emacs_vector.svg][→ Link]] | | =--with-retro-sink-bw-icon= | Unknown | [[/icons/retro-sink-bw.png]] | [[https://www.teuton.org/~ejm/emacsicon/][→ Link]] | | =--with-retro-sink-icon= | [[https://www.teuton.org/~ejm/][→ Erik Mugele]] | [[/icons/retro-sink.png]] | [[https://www.teuton.org/~ejm/emacsicon/][→ Link]] |

** Emacs configuration

Emacs is a journey. And for some of you these projects might be inspiring.

  • [[https://github.com/purcell/emacs.d][→ Steve Purcell's .emacs.d]]
  • [[https://github.com/syl20bnr/spacemacs/][→ Spacemacs]]
  • [[https://github.com/hlissner/doom-emacs][→ doom-emacs]]
  • [[https://github.com/bbatsov/prelude][→ Prelude]]

** Known Issues

Please checkout [[https://github.com/d12frosted/homebrew-emacs-plus/issues][→ Issues]] page for a list of all known issues. But here are several you should be aware of.

*** =emacs= dependency in other formulas

In some cases (like when installing =cask=) regular =emacs= package will be required. In such cases you might want to install all dependencies manually (except for =emacs=) and then install desired package with =--ignore-dependencies= option.

#+BEGIN_SRC bash $ brew install cask --ignore-dependencies #+END_SRC

** Screenshots

#+BEGIN_HTML

#+END_HTML

#+BEGIN_HTML

#+END_HTML

** Acknowledgements

Many thanks to all [[https://github.com/d12frosted/homebrew-emacs-plus/graphs/contributors][→ contributors]], issue reporters and bottle providers ([[https://github.com/wadkar][→ Sudarshan Wadkar]], [[https://github.com/jonhermansen][→ Jon Hermansen]]).


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
ruby (12,191
emacs (425
homebrew (166
spacemacs (31
brew (20

Find Open Source By Browsing 7,000 Topics Across 59 Categories