A good (I think) configuration for Emacs which have a BIG AMOUNT of unique features. This config 100% not for everyone Emacs user. I think you must have any Emacs background to use it (but maybe not)
This config is required in Emacs29.1 version, even better if Emacs was compiled with native-compilation feature
In this config you can find a big amount of new concepts for editor configs (I think). One of the most interesting features is that you can install this config (not count installing fonts, enchant2 (spell checker) and ripgrep) very quickly, because all packages are built in zip archive (see releases or #Installation section)
Some men asked me “So, you copied Doom. Why?”. My answer is that my config is even better than Doom (for me) + it isn’t a copy of Doom, I even wasn’t user of Doom never.
My configuration have a big amount of interesting concepts which are unique properties. Plus the biggest part of my config is opposite to Doom. Things where my config is better on 100% I will tell #nodoom, where is better by my opinion (everywhere, but here diff is bit) I will tell #dddm
- a beautiful design.
It includes
- a big amount of themes
- a big support of two themes: light and dark. You can change it for session using
M-x my-light-theme
orM-x my-dark-theme
. If you need to change it forever, replace a line inmy-load-theme.el
file - diagnostics and other things from echo area at the top left corner (#nodoom)
- amazing modeline
- icons everywhere (#nodoom)
- No to
prettify-mode
- Small, but amazing padding around screen (#nodoom)
- Very (really very) fast start up. (#nodoom #nodoom)
On my old computer
doomemacs
starts in 4+ seconds (it prints it after startup), but in fact it also wait for when themes, modeline and other things will be loaded. My config on other side take only 2secs(sometimes even 0.9s) and almost don’t take time after. - A big amount of packages (192+)
- Reload the configuration Emacs lisp file after it saved. Inspired by
VSCode
andNVChad
- more fast way to install
meow
overevil
(#dddm)- Own package manager, built over
straight.el
. (#nodoom)The benefit is a speed, it only one time add to the a path
load-path
. And other times Emacs will find a package only in this directory, instead of 220+ other directories when usestraight.el
It’s even better than Doom package manager, my package manager also join all autoloads file into one and byte compile it like Doom
- Use good-practice solutions, like replace heavy things with the more light. (#nodoom)
- Use
perspectives
(virtual desktops/workspaces for Emacs) with intuitive way - Some optimizations for Windows
- big usage of embark (just fun)
- Some things for sport programming
- special recipes to compile and run C++ files
- Edit input.txt (add input samples), now you can press f5 in C++ buffer, choose run with input.txt. wkw!
- in gdb debugger you can just insert whole input.txt content in one line (it’s useful)
- a big amount if helpful snippets
- insert template with snippet ! and multitester with !!
Interesting way to extension, which you can call chaos.
if you need use this “framework”:
You don’t need my pam
package manager! You don’t need any strict file system! You don’t need macros!
Every config file can be in any sub-folder of /lisp/
, have any name, contains any things. Only one separation is that files which not always needed at startup you can place at /lisp/local-projects/
.
You will build config emacs --modules
and all files from /lisp/
will be joined at /dist/my-modules.el
you can see source of my-modules build inside local-projects/my-build-config.el
(in this file you can also change order of including lisp files into my-modules) also you can generate autoloads files for local-projects (use --local-projects
flag) after that you everywhere can use autoloaded functions from local-projects
.
Also you can build config with call emacs --modules
in any shell
So main files (files of framework part) are only:
early-init.el
some speed-hacks beginnings forinit.el
init.el
but only a part, where handling of CLI argumentslocal-projects/my-build-config.el
, I think you understand it
this config uses a small package manager which is wrapper over straight.el. I called it `pam`
Idea is simple:
- when install
- after package is cloned and built in straight directory, `pam` copy all important package files into directory `pam` and append autoloads into one certain `pam` file
- when use
- just add
pam
directory toload-path
and load ONCE AT EMACS START. it’s better than load every autoload and add to load path ever new package after startup. on windows this optimization is matter
so there are two types of handling (pam-use-package 'package)
:
- install with `straight`
- do nothing
if your packages are installed choose second which is default. If you need to install new packages choose 1, you can either use emacs --install
or M-x pam-install-everything-mode
Before installation you must install JetBrainsMono Nerd Font
(use this zip file) or other Nerd Font, if your font isn’t JetBrainsMono, change the variable inside .config/emacs/lisp/ui/my-fonts.el
Also suggest to install ripgrep tool.
Also (if you are Mac OS or Linux user) suggest install enchant: a spell checker, see jinx
To install my config on your config as main use the following shell command, if you need to only try this config (without delete your thing), change .config/emacs on anything like ~/semacs (on windows replace .config with anything like AppData/Roaming)
# cd home directory!
wget https://github.com/semenInRussia/emacs.el/releases/download/latest/semacs.zip && mkdir .config/emacs -p && unzip -o -d .config/emacs semacs.zip
# on windows
# cd home directory %USER%
cd AppData/Roaming/
wget https://github.com/semenInRussia/emacs.el/releases/download/latest/semacs.zip && unzip -o -d .emacs.d semacs.zip
In this commands 3 steps:
- Install the archive which is updated automatically after every commit. This archive contains a configuration with installed 3rd party packages
- Make a directory where config will be located (defaults to .config/emacs but in windows it can be anything else)
- Unzip the archive to this folder
after this command on Linux or MacOS you MUST run nerd-fonts-install-fonts
, maybe not
Also if you need in jinx, run M-x pam-use-package jinx
You can extract an archive into any directory, and run emacs using --init-directory
flag, like:
emacs --init-directory=~/semacs # semacs is cloned repo source
# or
emacs -l init.el # init.el is the file from repo
So you can test it without chemacs
and other stupid things, you even not need in emacs29 –init-directory, but you still needed in emacs29
- Emacs 29.1+ (check here)
- Ripgrep (check here)
- Enchant :not for Windows: (check here, also install needed dictionaries, maybe use the following shell)
cd .config/enchant/ wget https://raw.githubusercontent.com/LibreOffice/dictionaries/master/en/en_US.dic wget https://raw.githubusercontent.com/LibreOffice/dictionaries/master/en/en_US.aff wget https://raw.githubusercontent.com/LibreOffice/dictionaries/master/ru_RU/ru_RU.dic wget https://raw.githubusercontent.com/LibreOffice/dictionaries/master/ru_RU/ru_RU.aff mkdir hunspell mv en_US.aff en.aff mv en_US.dic en.dic mv *dic hunspell mv *aff hunspell
- Fonts (better JetBrains Mono and Symbols Nerd Font Mono : link to zip archive)