Giter VIP home page Giter VIP logo

homebrew-emacs-plus's Introduction

Banner

Emacs Plus

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

About

Screenshot

Emacs Plus is → GNU Emacs formulae for macOS → Homebrew package manager. It offers a wide rage of extra functionality over regular → 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 section for more information.

$ brew tap d12frosted/emacs-plus
$ brew install emacs-plus    [options] # install the latest release (Emacs 27)
$ brew install emacs-plus@26 [options] # install Emacs 26
$ brew install emacs-plus@27 [options] # install Emacs 27
$ brew install emacs-plus@28 [options] # install Emacs 28

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 → Development guidelines to have better understanding on how to contribute.

Table of Contents

Install

Emacs Plus contains separate formulas for different Emacs versions:

  • emacs-plus install current release version (Emacs 27);
  • emacs-plus@26 install Emacs 26, previous release version;
  • emacs-plus@27 install Emacs 27, current release version;
  • emacs-plus@28 install Emacs 28, development version.
    $ brew tap d12frosted/emacs-plus
    $ brew install emacs-plus    [options] # install the latest release (Emacs 27)
    $ brew install emacs-plus@26 [options] # install Emacs 26
    $ brew install emacs-plus@27 [options] # install Emacs 27
    $ brew install emacs-plus@28 [options] # install Emacs 28
        

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.

$ brew uninstall emacs-plus
$ brew install emacs-plus [options]

Emacs 26 options

Emacs 26 comes without any available options due to → #195.

Emacs 27 and Emacs 28 options

OptionDescription
--with-ctagsdon’t remove the ctags executable that Emacs provides
--with-dbusbuild with dbus support
--with-debugbuild with debug symbols and debugger friendly optimizations
--with-mailutilsbuild with mailutils support
--with-no-frame-refocusdisables frame re-focus (ie. closing one frame does not refocus another one)
--with-no-titlebarbuild → without titlebar
--with-x11build with x11 support
--with-xwidgetsbuild → with xwidgets support
--without-cocoabuild a non-Cocoa version of Emacs (terminal only)
--without-imagemagickbuild without imagemagick support
--HEADbuild from emacs-27 branch (only for emacs-plus@27)
--with-native-compbuild from native-comp branch aka → gccemacs (only for emacs-plus@28)

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 → yabai, → chunkwm or → 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:

(setq frame-resize-pixelwise t)

Xwidgets (webkit)

Browse the web in Emacs as in modern browser.

The original → 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 → 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.

(defun my/apply-theme (appearance)
  "Load theme, taking current system APPEARANCE into consideration."
  (mapc #'disable-theme custom-enabled-themes)
  (pcase appearance
    ('light (load-theme 'tango t))
    ('dark (load-theme 'tango-dark t))))

(add-hook 'ns-system-appearance-change-functions #'my/apply-theme)

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. You can also determine what the current system appearance is by inspecting the value of the ns-system-appearance variable.

The hook is NOT run in TTY Emacs sessions.

gccemacs

gccemacs is a modified Emacs capable of compiling and running Emacs Lisp as native code in form of re-loadable elf files. As the name suggests this is achieved blending together Emacs and the gcc infrastructure.

→ Andrea Corallo

While gccemacs gives performance boost in many scenarios, this feature is still experimental and might require time and effort from your side for it to work! Use at our own risk :)

Please see official → gccemacs documentation for more information.

Knows issues:

  • ld: library not found for -lSystem. On Big Sur, one must install libgccjit from sources:
    • $ brew uninstall gcc libgccjit
    • $ brew install gcc
    • $ brew install libgccjit -s
  • Errors during compilation of your init.el. Try running Emacs with -Q option and give it some time to compile everything (maybe run M-x to force compilation) - you shall see buffer *Async-native-compile-log* in the list of buffers.

Icons

OptionAuthorImageURL
--with-spacemacs-icon→ Nasser Alshammari/icons/spacemacs_128.png→ Link
--with-gnu-head-icon→ Aurélio A. Heckert/icons/gnu-head_128.png→ Link
--with-EmacsIcon1-icon→ Jason Milkins/icons/EmacsIcon1_128.png→ Link
--with-EmacsIcon2-icon→ Jason Milkins/icons/EmacsIcon2_128.png→ Link
--with-EmacsIcon3-icon→ Jason Milkins/icons/EmacsIcon3_128.png→ Link
--with-EmacsIcon4-icon→ Jason Milkins/icons/EmacsIcon4_128.png→ Link
--with-EmacsIcon5-icon→ Jason Milkins/icons/EmacsIcon5_128.png→ Link
--with-EmacsIcon6-icon→ Jason Milkins/icons/EmacsIcon6_128.png→ Link
--with-EmacsIcon7-icon→ Jason Milkins/icons/EmacsIcon7_128.png→ Link
--with-EmacsIcon8-icon→ Jason Milkins/icons/EmacsIcon8_128.png→ Link
--with-EmacsIcon9-icon→ Jason Milkins/icons/EmacsIcon9_128.png→ Link
--with-emacs-card-blue-deep-icon→ Jason Milkins/icons/emacs-card-blue-deep_128.png→ Link
--with-emacs-card-british-racing-green-icon→ Jason Milkins/icons/emacs-card-british-racing-green_128.png→ Link
--with-emacs-card-carmine-icon→ Jason Milkins/icons/emacs-card-carmine_128.png→ Link
--with-emacs-card-green-icon→ Jason Milkins/icons/emacs-card-green_128.png→ Link
--with-modern-iconUnknown/icons/modern_128.pngUnknown
--with-modern-cg433n-icon→ cg433n/icons/modern-cg433n.png→ Link
--with-modern-sjrmanning-icon→ sjrmannings/icons/modern-sjrmanning.png→ Link
--with-modern-sexy-v1-icon→ Emacs is Sexy/icons/modern-sexy-v1.png→ Link
--with-modern-sexy-v2-icon→ Emacs is Sexy/icons/modern-sexy-v2.png→ Link
--with-modern-papirus-icon→ Papirus Development Team/icons/modern-papirus.png→ Link
--with-modern-pen-icon→ Kentaro Ohkouchi/icons/modern-pen.png→ Link
--with-modern-black-variant-icon→ BlackVariant/icons/modern-black-variant.png→ Link
--with-modern-nuvola-icon→ David Vignoni/icons/modern-nuvola.png→ Link
--with-retro-sink-bw-iconUnknown/icons/retro-sink-bw.png→ Link
--with-retro-sink-icon→ Erik Mugele/icons/retro-sink.png→ Link

Emacs configuration

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

Known Issues

Please checkout → 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.

$ brew install cask --ignore-dependencies

Screenshots

Acknowledgements

Many thanks to all → contributors, issue reporters and bottle providers (→ Sudarshan Wadkar, → Jon Hermansen).

Special thanks to patrons supporting existence of this project:

homebrew-emacs-plus's People

Contributors

aaronjensen avatar aatxe avatar belak avatar benmezger avatar beyondpie avatar blaisorblade avatar braham-snyder avatar casouri avatar d12frosted avatar d12golem avatar dependabot[bot] avatar dmgm avatar goranmoomin avatar jakejx avatar jidicula avatar jwintz avatar kevinji avatar ksexton avatar majorgreys avatar makohoek avatar meqif avatar mikeh-stripe avatar ngoue avatar ngquerol avatar pachevjoseph avatar pavllick avatar shuxiao9058 avatar syl20bnr avatar theutz avatar winmillwill avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.