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.
git clone https://github.com/grandfoobah/spartan-emacs.git ~/.emacs.d
- 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)
- Edit init.el and M-x spartan-reconfigure
- 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)
- Lisp/Scheme
- Bash
- Python
- PR’s accepted :)
- Fork repo, clone it, own it
- git pull
- M-x package-list-packages => U => x
- 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.
- 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
- FREE SOFTWARE, PUBLIC DOMAIN, NO WARRANTY
- HAPPY HACKING