Code Monkey home page Code Monkey logo

onetomacs's Introduction

Intro

Hi, I'm @onetom and this is my Emacs configuration, built from scratch.

I use it on macOS only, with the emacs-mac variant of Emacs, made by Mitsuharu Yamamoto (aka @railwaycat).

I started building it, after I tried tons of other configuration systems, like

  • Doom Emacs
  • Spacemacs
  • Prelude
  • Centaur Emacs
  • and so on...

I don't use it for work yet, because it still lacks lots of features, which I use daily in IntelliJ with Cursive.

Rationale

Trying off-the-shelf configurations were a great way to get acquainted with Emacs and its package ecosystem. I got to learn a lot of terminology, which is wildly different from the language used by the "more modern" editors and IDEs.

I had a common issue with such configurations, though.

While I could figure out how to customize some common aspects of them, more often than not, I had no idea where to start. Quite frequently, I didn't even know what package was providing a certain feature.

Generally, I had to do deconstructive work to achieve the changes I desired.

I prefer the constructive (additive) approach much more though.

I can experience Emacs in all the intermediary states, as its complexity grows with every package I load into it.

If anything breaks, the reasons for it are a lot more limited; I have to do a lot less guess work.

That's why I started my configuration from scratch.

The 1st step was to adjust all those basic settings, which I find familiar and also common in every other editor/IDE, which was built in recent decades.

This made the whole exercise a lot more bearable. You can find these settings around the top of the init.el.

Next step was to understand and decide about managing Emacs packages. I choose straight.el.

straight.el

I'm using the Nix package manager on macOS for a couple of years now and I quite sold on its approach. straight.el documentation explicitly states that it was inspired by Nix, so it got me interested. After I've learnt that Doom Emacs is also using straight under the hood, I was pretty convinced to put my bet on straight.

chemacs2

There is a lot to learn from the various, full fledged Emacs "distros", so it's very desirable to have access to them, while developing your own configuration.

To that end, I use chemacs2, to keep multiple Emacs configurations around.

chemacs2 configures some aspects of Emacs, like the path to the custom-file, so my .gitignore assumes the following settings in ~/.config/chemacs/profiles.el:

(("onetom"
  . ((server-name . "onetom")
     (user-emacs-directory . "~/src/emacs-cfg")
     (custom-file . "~/src/emacs-cfg/custom.el")
     (straight-p . t)))

 ("onetom-doom"
  . ((server-name . "onetom-doom")
     (user-emacs-directory . "~/src/doom-emacs")))

 ("spacemacs"
  . ((server-name . "spacemacs")
     (user-emacs-directory . "~/src/spacemacs")
     (env . (("SPACEMACSDIR" . "~/src/some-dotfiles/.spacemacs.d"))))))

onetomacs's People

Contributors

onetom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 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.