Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alezost/emacs-config
My ".emacs"
https://github.com/alezost/emacs-config
dotfiles emacs-configuration emacs-lisp
Last synced: about 2 months ago
JSON representation
My ".emacs"
- Host: GitHub
- URL: https://github.com/alezost/emacs-config
- Owner: alezost
- License: gpl-3.0
- Created: 2015-01-09T14:22:42.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2022-01-05T17:15:30.000Z (about 3 years ago)
- Last Synced: 2024-08-05T06:06:04.193Z (5 months ago)
- Topics: dotfiles, emacs-configuration, emacs-lisp
- Language: Emacs Lisp
- Homepage:
- Size: 730 KB
- Stars: 19
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- License: LICENSE
Awesome Lists containing this project
README
** About
This repository contains my configuration for [[https://www.gnu.org/software/emacs/][GNU Emacs]].
It is intended to be used only by me, not by other people. Anyway, here
are the main features of my config.** Features
- No [[https://orgmode.org/worg/org-contrib/babel/intro.html#literate-programming][Org-mode for emacs config]] because good old =.el= files are much
more convenient for me.- Unusable key bindings: I use hundreds and hundreds of non-standard key
bindings that are suitable for me. Besides, I use dvorak layout, so my
bindings may look really weird for other people. I use my code (from
[[file:init/keys.el][keys.el]]) based on [[https://github.com/jwiegley/use-package/blob/master/bind-key.el][bind-key]] to manage those tons of keys.- I prefer to split my config into multiple files instead of keeping
everything in a single one. And it is really easy to search them
using [[https://github.com/alezost/imenus.el][imenus]]. I just press =s-s= (which is bound to
=al/imenus-search-elisp-dir= from [[file:utils/al-imenus.el][al-imenus.el]]) and jump to
=with-eval-after-load= clause or perform =isearch= or =occur= if I
need to search for something.- I use an insane mix of [[https://github.com/quelpa/quelpa][quelpa]]/[[https://melpa.org/][melpa]]/[[https://guix.gnu.org/][GNU Guix]] to install/upgrade Emacs
packages. Do not try this at home ☺.- My Emacs config is intended to be robust. I mean it does not require
any third-party packages to be started successfully. So I can easily
deploy my config on a fresh system: I just clone the repo and make
[[~/.emacs.d/init.el]] file a symlink to my [[file:init/init.el][init.el]]. Actually, this
process is even more simple, as I don't do this manually — I use my
[[https://gitlab.com/alezost-config/config][config]] script to fetch and deploy all my configs including this Emacs
config.- And I don't use [[https://github.com/jwiegley/use-package/][use-package]] anymore (see commit 2e49f03). I used to
do it until I realized the importance of the previous point. When you
use =use-package= in your config, it becomes a required dependency for
starting Emacs, so on a "fresh" system, you need to install it at
first, before you can use your config. Also someday it may be changed
in a way that will break your system, and you'll have to fix your
config without using it.- My Emacs start time is always less than a second according to =M-x
emacs-init-time= (actually, I have this value in my
=initial-scratch-message= so I know the init time very well), because
I don't =require= packages without a reason as some people do.
Instead, I use =with-eval-after-load= everywhere.** Files
As you can see, this repository consists of the following directories:
- [[file:init][init]]: The files that are loaded on Emacs start. As described above,
[[file:init/init.el][init.el]] is the "main" init file. It defines some major
things and loads the rest files from this directory.- [[file:utils][utils]]: These are my various auxiliary small packages with the
additional code (for Emacs itself and for external packages) that is
not needed for start-up. All of the code there have "al/" prefix and
are placed in files that provide "al-…" features. My init files are
full of things like:#+BEGIN_SRC emacs-lisp
(with-eval-after-load 'eshell
;; ...
(when (require 'al-eshell nil t)
;; ...
))
#+END_SRCSo these utils are loaded only if and when they are needed. Also
there are many interactive commands there which are autoloaded (I use
=al/update-autoloads= command to update these autoloads).In the past these utils were placed in a [[https://github.com/alezost/emacs-utils][separate repository]] and had
"utl-" prefix.- [[file:data][data]]: Just some Emacs related data (like eshell aliases or my
yasnippets) that I use.