bezirg / spartan-emacs

Emacs for Spartans

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SPARTAN EMACS

spartan-emacs.jpg

If you feel like spacemacs/doom/prelude/purcell/radian/… are too bloated, while rolling your own as described in emacs-starter-kit may be too time consuming… And if you are looking for a simple and well organized base to build on, then Spartan Emacs might be a good choice for you.

QUICK INSTALL

git clone https://github.com/grandfoobah/spartan-emacs.git ~/.emacs.d

FEATURES

  • Simple, clean configuration and a comprehensible layers system
  • No third party packages install by default
  • Prefer built-ins
  • Use lightweight, mostly-vanilla configured layer packages for simplicity, performance, and reliability
  • No syntax highlighting
  • Doesn’t mess with use-package, deferral, the pdumper – doesn’t care about start time (Still loads all layers sans evil in 0.77 seconds on my old laptop…)
  • Programmer-centric – doesn’t mess with Email, Browsers, Window Management, or Media players (not that it can’t…)
  • Tested on Linux, but should work also work fine on any gnu/bsd/macos base
  • Tuned for ultimate performance using the latest pgtk gccemacs with native json parsing with eglot language server protocol (not required, just recommended)
  • Optional evil mode, magit, projectile, etc. (More layers coming soon)

LAYERS

  • Edit init.el and M-x spartan-reconfigure

HOW LAYERS WORK

  • Enabled layer packages are installed during init
  • Then layer packages are configured in the after-init-hook
  • Finally layer packages may be user local customized in spartan.d/

    (all lisp files in spartan.d/ load last, during the emacs-startup-hook)

LANGUAGES PRECONFIGURED

  • Lisp/Scheme
  • Bash
  • Python
  • PR’s accepted :)

HOW TO HACK

  • Fork repo, clone it, own it

HOW TO UPDATE

  • git pull
  • M-x package-list-packages => U => x

ASSUMPTIONS

  • GNU or BSD coreutils
  • Adobe source code pro font
  • For Bash, i prefer installing shellcheck-bin (recommended) and only using that as it has better diagnostics than bash-language-server currently.
  • For python, pip install –user pipenv python-language-server[all]

    after that, eglot and lsp should be working automatically.

    If i want to setup a pipenv project with project dependency tracking, i’ll do something like,

    pipenv install –dev –pre python-language-server[all]

    in the project directory… after that pipenv run emacs to use the environment that way.

KEY BINDS

  • Default emacs binds (unless you enable evil)
  • Principally, we want to use short M-x aliases, while also putting global function binds on C-c and language specific binds on M-m prefixes
  • Do look at spartan-binds-global.el to get the general idea,

    M-x ff (find files) , M-x rg (rgrep files) , M-x kr (browse-kill-ring) , M-x ed (ediff) , M-x git (magit) , M-x lint (flymake) , M-x pb (webpaste) , M-x sh (better-shell) , <f5> (compile) , <f6> (script execute) …

  • Also see spartan-eglot.el for language-server-protocol binds
  • And for language-specific files, see relevant language file e.g. spartan-python.el
  • Lastly, if not using evil, I recommend swapping left-alt with left-control in your desktop settings for ergonomic reasons. I’ve been doing it for years, and it basically solves the infamous “Emacs pinky” RSI issue

CONTRIBUTE

LICENSE

  • FREE SOFTWARE, PUBLIC DOMAIN, NO WARRANTY
  • HAPPY HACKING

About

Emacs for Spartans


Languages

Language:Emacs Lisp 100.0%