#+TITLE: .emacs.d #+AUTHOR: Wojciech Kozlowski #+EMAIL: wk@wojciechkozlowski.eu * Emacs version This configuration is maintained only for the Emacs master branch version. It may work on some older version or you may have to remove the features that rely on the newer Emacs versions. Currently, this configuration uses a few features from Emacs 26 and 27. To fully leverage the features used in this configuration, Emacs must be compiled with the right options. ** Native JSON This configuration uses ~lsp-mode~ for some programming languages which is much faster if Emacs is compiled with native JSON support. Emacs will by default compile with native JSON support if the ~jansson~ library is present (including headers). ** Vterm *** Dynamic modules ~vterm~ uses dynamic modules. In order to enable dynamic modules, Emacs must be compiled with the ~--with-modules~ option (not enabled by default). *** Pre-requisites ~vterm~ requires =cmake= and =libtool= to be installed. *** Directory tracking To enable directory tracking in vterm, put this in =.zshrc= #+BEGIN_SRC vterm_printf(){ printf "\e]%s\e\\" "$1" } vterm_prompt_end() { vterm_printf "51;A$(whoami)@$(hostname):$(pwd)"; } setopt PROMPT_SUBST PROMPT=$PROMPT'%{$(vterm_prompt_end)%}' #+END_SRC * Installation Clone this repository into your home directory: #+BEGIN_SRC $ git clone https://github.com/Wojtek242/.emacs.d ~/.config/emacs #+END_SRC This configuration uses the [[https://github.com/adobe-fonts/source-code-pro][Source Code Pro]] font. If you do not have it installed and it isn't available through your distribution you can install the font by running #+BEGIN_SRC $ git clone https://github.com/adobe-fonts/source-code-pro.git --branch release ~/.local/source-code-pro $ sudo cp ~/.local/source-code-pro/OTF/*.otf /usr/local/share/fonts #+END_SRC Once the initial setup completes, you also need to run the following in Emacs #+BEGIN_SRC M-x all-the-icons-install-fonts #+END_SRC * External Support for Programming Languages This configuration relies uses ~lsp-mode~ for language-specific features. However, in order to use the LSP features, you need to have the appropriate language servers installed. ** C/C++ Emacs will automatically download ~clangd~ if it isn't installed already. ** Python Emacs will automatically download ~pyright~ if it isn't installed already. Note that this requires ~npm~ to be installed. ** Rust Install ~rust-analyzer~. * Package Management This =.emacs.d= uses its own small framework for package management located in the [[emodule][emodule]] directory. Its operation is heavily inspired by [[http://spacemacs.org/][Spacemacs]], but is much smaller with fewer features and thus simpler. For instructions, see its own [[emodule/README.org][README file]]. * Theme The theme in use started with the =underwater= theme and has been heavily modified, with inspiration from the [[http://spacemacs.org/][Spacemacs]] theme, to add support for all new faces introduced by the installed packages. The theme files are located in the [[themes][themes]] directory.