All Projects → thefrontside → Frontmacs

thefrontside / Frontmacs

Licence: mit
Package-based, web-centric, customizable, awesome-by-default, acceptance-tested Emacs distribution

Projects that are alternatives of or similar to Frontmacs

Uncledavesemacs
My personal ~/.emacs.d
Stars: ✭ 204 (-54.16%)
Mutual labels:  emacs, emacs-configuration, emacs-packages
Super Save
Save Emacs buffers when they lose focus
Stars: ✭ 184 (-58.65%)
Mutual labels:  emacs, emacs-packages
Emacs Vdiff
Like vimdiff for Emacs
Stars: ✭ 165 (-62.92%)
Mutual labels:  emacs, emacs-packages
Emacs From Scratch
An example of a fully custom Emacs configuration developed live on YouTube!
Stars: ✭ 412 (-7.42%)
Mutual labels:  emacs, emacs-configuration
Writingwithemacs
Tips, Examples, and Resources for Writing with Emacs
Stars: ✭ 150 (-66.29%)
Mutual labels:  emacs, emacs-configuration
Lunarymacs
Moon-based Emacs configuration.
Stars: ✭ 151 (-66.07%)
Mutual labels:  emacs, emacs-configuration
Evil Multiedit
Multiple cursors for evil-mode, based on iedit
Stars: ✭ 200 (-55.06%)
Mutual labels:  emacs, emacs-packages
Emacs Gdscript Mode
An Emacs package to get GDScript support and syntax highlighting.
Stars: ✭ 132 (-70.34%)
Mutual labels:  emacs, emacs-packages
.emacs.d
My emacs configuration
Stars: ✭ 224 (-49.66%)
Mutual labels:  emacs, emacs-configuration
Academic Phrases
Bypass that mental block when writing your papers.
Stars: ✭ 244 (-45.17%)
Mutual labels:  emacs, emacs-packages
emrc
EMacsRu metapackages collection
Stars: ✭ 12 (-97.3%)
Mutual labels:  emacs-configuration, emacs-packages
Emacs Bootstrap
Your on-the-fly Emacs development environment.
Stars: ✭ 147 (-66.97%)
Mutual labels:  emacs, emacs-configuration
Borg
Assimilate Emacs packages as Git submodules
Stars: ✭ 145 (-67.42%)
Mutual labels:  emacs, emacs-packages
Org Msg
OrgMsg is a GNU/Emacs global minor mode mixing up Org mode and Message mode to compose and reply to emails in a Outlook HTML friendly style.
Stars: ✭ 153 (-65.62%)
Mutual labels:  emacs, emacs-packages
Elpa
Emacs China ELPA 镜像
Stars: ✭ 137 (-69.21%)
Mutual labels:  emacs, emacs-packages
Evil Snipe
2-char searching ala vim-sneak & vim-seek, for evil-mode
Stars: ✭ 196 (-55.96%)
Mutual labels:  emacs, emacs-packages
Dotfiles
Configuration files for XMonad, Emacs, NixOS, Taffybar and more.
Stars: ✭ 127 (-71.46%)
Mutual labels:  emacs, emacs-configuration
Emacs Solaire Mode
If only certain buffers could be so grossly incandescent.
Stars: ✭ 129 (-71.01%)
Mutual labels:  emacs, emacs-packages
Emacs Config
My configuration for Doom Emacs
Stars: ✭ 296 (-33.48%)
Mutual labels:  emacs, emacs-configuration
.emacs.d
🎉 Personal GNU Emacs configuration
Stars: ✭ 313 (-29.66%)
Mutual labels:  emacs, emacs-configuration

Frontmacs

ELPA Version Build Status Join the chat at https://gitter.im/thefrontside/frontmacs

A package-based, web-centric, customizable, awesome-by-default, acceptance-tested Emacs distribution curated by your friends at Frontside.

We've been using Emacs for years here at Frontside, and have finally decided to share the configuration for our favorite editor with the world. Why did we make our own?

Package Based.

We've been satisfied users of many a starter kit over the years, from the original Emacs Starter Kit, to Prelude and Spacemacs. Most starter kits you come across begin with a fork. You clone the repo, and then you're off to the races maintaining your own version. Any customizations you make are made to files under version control and so upgrading and keeping up with the community is a constant battle of merges, rebases, throw-aways and ultimately do overs. We know because we've been there.

This is painful enough when you're maintaining your own fork, but every time we wanted to make a customization from which the entire team could benefit, it involved everybody doing the same merge, rebase, throw-away dance. But, it turns out that Emacs has a mechanism to distribute elisp code without having to use git. It's called ELPA and it's awesome. You can think of it like a Ruby gem or an NPM package, and this is what Frontmacs uses for deployment.

We don't want to maintain code, we just want to enter a few keystrokes and download more awesome. And that's what we get by using elisp packages to install Frontmacs. Now, anytime we fix a bug or make an improvement, the entire team can benefit with a simple upgrade.

Web technologies

We are specialists in UI, and so it is natural that our Emacs distribution reflect that expertise. If you work in the web, then you can be sure that Frontmacs will be an able partner in slinging modern JavaScript using modern frameworks. Whether it's React, React Native, Angular, Ember, SASS.... whatever.

Awesome by Default

Emacs is true ultimate power! But that doesn't mean that it should be intimidating or terrifying to set up. Frontmacs aims to have everything you would expect to have a modern development environment to have out of the box: navigation, completion, etc...

It draws power in a shared configuration in which everybody has a stake. More knowledge shared means fewer bugs arise, and those that do get resolved more quickly.

Customizable

Just because the default set of packages is heavily curated, doesn't mean that there shouldn't be room for you to innovate and exercise your creative muscles.

In fact, because Frontmacs is distributed as an Emacs Lisp package, it is decoupled from git and so you are now free to maintain your own customizations in your own repository without fear of conflicting with the main distribution.

Acceptance Tested

Most of the planet doesn't treat editor configuration as software. We do.

Whenever you integrate a bunch of different packages from across the internet, you're bound to run into conflicts over things like key-bindings, or function advice.

Making changes to an editing experience shared by many people is a responsibility we take very seriously. That's why Frontmacs makes sure that critical behaviors are tested so that you won't get bad upgrades that ruin your day. If you do, you can run the test suite to find out exactly what went wrong and where.


Installation

Download the bootstrap script into your emacs directory

$ cd ~/.emacs.d
$ wget https://raw.githubusercontent.com/thefrontside/frontmacs/master/scripts/init-frontmacs.el

add the following lines to the top of your init.el:

;; boot frontmacs
(load (expand-file-name "init-frontmacs.el" user-emacs-directory))

Restart your Emacs and away you go!


Configuration

Frontmacs will create several files and directories in your Emacs directory (usually $HOME/.emacs.d) to help with configuration and initialization. The first is config.el This file is loaded before Frontmacs actually initializes, and so it's a chance to set any well defined customizations. But don't worry, Frontmacs will generate this file for you so that you can see what all configuration variables are available.

For everything else, there are all of the files contained in $HOME/.emacs.d/initializers. Every elisp file contained in this directory will be evaluated after Frontmacs has been fully configured and initialized, so settings made in these files will override anything that comes with Frontmacs out of the box. For example, you can create your Ruby configuration with a file called:

$HOME/.emacs.d/initializers/ruby.el

(eval-after-load 'rspec-mode
  '(rspec-install-snippets))

(add-to-list 'auto-mode-alist '("Gemfile" . ruby-mode))
(add-to-list 'auto-mode-alist '("\\.gemspec\\'" . ruby-mode))

Just drop any .el file into the initializers/ directory, and Frontmacs will evaluate it.

Note: When in doubt about whether you should put something in config.el or a custom initializer, use an initializer.


Development

You will need a patched version of Cask to do development on.

$ git clone -b specify-package-descriptor --depth=1 https://github.com/cowboyd/cask.git $HOME/.cask
$ export PATH=$HOME/.cask/bin:$PATH

install dependencies

$ cask install

Run an emacs using nothing but the local frontmacs

$ make runlocal
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].