Home

Awesome

Centaur Emacs

Build Status Release Tag License Windows Linux macOS

Centaur Emacs

<!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->

Table of Contents

<!-- markdown-toc end -->

This is an Emacs distribution that aims to enhance the default Emacs experience. It alters a lot of the default settings, bundles a plethora of additional packages and adds its own core library to the mix. The final product offers an easy to use Emacs configuration for Emacs newcomers and lots of additional power for Emacs power users.

It's able to run on Windows, GNU Linux and macOS. It is compatible ONLY with GNU Emacs 27.1 and above. In general you're advised to always run with the latest stable release - currently 29.2.

Features

Prerequisite

OS

GNU Emacs

Please refer to Installing Emacs.

Dotfiles (Optional)

Recommend to use Centaur Dotfiles.

Quick Start

Install

mv ~/.emacs.d ~/.emacs.d.bak
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git ~/.emacs.d

or download the zip package directly and extract to ~/.emacs.d.

If you are using Linux, you may prefer an XDG-compatible location, please use

# Please make sure ~/.emacs.d, ~/.emacs and ~/.emacs.el don't exist
git clone --depth 1 https://github.com/seagle0128/.emacs.d.git $XDG_CONFIG_HOME/emacs

or extract the zip package to $XDG_CONFIG_HOME/emacs directory.

Then start Emacs. Wait for a while to install packages at the first startup. Enjoy! :smile:

Attention: It may take long time to download packages at the first startup. It's up to your network speed. If it takes too long time and no response, check the connection or use proxy.

Note: Start Emacs with the minimal configuration for fast startup and troubleshooting.

emacs -Q -l ~/.emacs.d/init-mini.el

Update

# Update Centaur Emacs, including configurations and packages
M-x centaur-update

# Update Emacs configurations only
M-x centaur-update-config

# Update ~/.dotfiles if it exists
M-x centaur-update-dotfiles

# Update packages only
M-x centaur-update-packages

# Update all including configurations, packages and dotfiles
M-x centaur-update-all

Docker

cd ~/.emacs.d/Dockerfile
docker build -t centaur/emacs .
docker run -it centaur/emacs bash

Customization

Customize Group

M-x customize-group and select centaur. Set and save the configurations, then restart Emacs.

Manual

Add or change the configurations in custom.el, then restart Emacs.

For Example:

(setq centaur-logo nil)                        ; Logo file or nil (official logo)
(setq centaur-full-name "user name")           ; User full name
(setq centaur-mail-address "user@email.com")   ; Email address
(setq centaur-proxy "127.0.0.1:1087")          ; HTTP/HTTPS proxy
(setq centaur-socks-proxy "127.0.0.1:1086")    ; SOCKS proxy
(setq centaur-server t)                        ; Enable `server-mode' or not: t or nil
(setq centaur-icon t)                          ; Display icons or not: t or nil
(setq centaur-package-archives 'melpa)         ; Package repo: melpa, bfsu, iscas, netease, sjtu, tencent, tuna or ustc
(setq centaur-theme 'auto)                     ; Color theme: auto, random, system, default, pro, dark, light, warm, cold, day or night
(setq centaur-completion-style 'minibuffer)    ; Completion display style: minibuffer or childframe
(setq centaur-dashboard nil)                   ; Display dashboard at startup or not: t or nil
(setq centaur-lsp 'lsp-mode)                   ; Set LSP client: lsp-mode, eglot or nil
(setq centaur-lsp-format-on-save t)            ; Auto format buffers on save: t or nil
(setq centaur-lsp-format-on-save-ignore-modes '(c-mode c++-mode python-mode markdown-mode)) ; Ignore format on save for some languages
(setq centaur-tree-sitter nil)                 ; Enable tree-sitter or not: t or nil. Only available in 29+.
(setq centaur-chinese-calendar nil)            ; Support Chinese calendar or not: t or nil
(setq centaur-player t)                        ; Enable players or not: t or nil
(setq centaur-prettify-symbols-alist nil)      ; Alist of symbol prettifications. Nil to use font supports ligatures.
(setq centaur-prettify-org-symbols-alist nil)  ; Alist of symbol prettifications for `org-mode'

The default package archives is melpa. You can change it in custom.el, or set manually via M-x set-package-archives anytime.

For the personal configurations, you could put to ~/.emacs.d/custom-post.org or~/.emacs.d/custom-post.el.

Hydra

NameScopeKeybindingDescription
toggles-hydraglobal<f6>Global option toggles
window-hydraglobalC-c w/C-x o wWindow management
doom-modeline-hydradoom-modeline-modeC-<f6>Mode-line options and actions
hydra-dired-qick-sortdired-modeSOptions for dired-quick-sort
org-hydraorg-mode<Org template
dashboard-hydradashboard-modeh/?Actions for the dashboard
dumb-jump-hydraglobalC-M-jJump to definition
youdao-dictionay-hydrayoudao-dictionay-modeh/?Actions for youdao-dictionary
ztreediff-hydrazreediff-modeC-<f5>Actions for text mode directory tree
git-messenger-hydraglobalC-x v pActions for git-messenger
smerge-mode-hydrasmerge-modeC-c mActions for smerge-mode
rect-hydratext-mode, prog-modeC-<return>Actions for Rectangle
rect-hydraorg-modeS-<return>Actions for Rectangle
hideshow-hydraprog-modeC-~Actions for hideshow
lsp-ui-hydralsp-ui-modeM-<f6>Actions for lsp-ui
dap-hydradap-modeM-<f5>Actions for dap-debug
elfeed-hydraelfeed-search-mode?Actions for RSS reader elfeed
xwidget-hydraxwidget-webkit-mode?Actions for embedded webkit browser

Screenshots

Dashboard

color_icons

markdown_magit

org_classic

main_light

FAQ

  1. How to display icons correctly in Centaur Emacs?

    Generally you just use M-x centaur-install-fonts to install all necessary fonts. The manual steps are below.

    nerd-icons are necessary. Run M-x nerd-icons-install-fonts to install the resource fonts. On Windows, the fonts should be installed manually. nerd-icons supports bot GUI and TUI. If you don't like color icons, (setq nerd-icons-color-icons nil) to disable it. Please refer to nerd-icons.el for details.

  2. The packages cannot be installed, what should I do?

    Generally it's due to connection issue. Please refer to #98.

    • M-x package-refresh-contents and try again.
    • (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3").
    • Use other mirror of ELPA.
    • Change another network to retry.
  3. How to search Chinese via pinyin?

    In Emacs, C-s !. If you just want to search !, use C-s \!.

  4. How to use the Centaur Dashboard?

    If centaur-dashboard is non-nil the Centaur Dashboard will be opened at startup automatically. After startup, you could use F2 to reopen it anytime. In the dashboard, please press ? or h to get the help. You can easily jump to the sections or buttons with keybindings, e.g. Homepage(H), Session(R, L), Settings(S), Update(U), Recent Files (r), Bookmarks(m) and Projects(p).

  5. Does Centaur Emacs support Language Server Protocol (LSP)?

    The LSP feature is supported and enabled by default in Centaur Emacs. lsp-mode is the default client, and eglot is another choice. Use (setq centaur-lsp nil) to disable LSP if you don't like it.

    To use LSP you should install the language servers. Refer to lsp-mode: supported-languages or eglot: Connecting to a server for the details.

  6. How to enable plantuml in org-mode?

    Put (setq org-plantuml-jar-path "<path of plantumx.x.x.jar>") in custom.el.

  7. Why the Emacs environment variables and exec-path are different between GUI and terminal?

    Please refer to #33. You should instead set environment variables in startup files like .profile, .bash_profile or .zshenv, then Centaur Emacs is able to recognize and import the environment variables.

  8. How to use zoom-window in Centaur Emacs?

    See #169.

Donate

If you think the it's helpful for you, please consider paying a cup of coffee for me. Thank you! :smile:

<img src="https://user-images.githubusercontent.com/140797/65818854-44204900-e248-11e9-9cc5-3e6339587cd8.png" alt="Alipay" width="120"/>      <img src="https://user-images.githubusercontent.com/140797/65818844-366ac380-e248-11e9-931c-4bd872d0566b.png" alt="Wechat Pay" width="120"/>

<a href="https://paypal.me/seagle0128" target="_blank"> <img src="https://www.paypalobjects.com/digitalassets/c/website/marketing/apac/C2/logos-buttons/optimize/44_Grey_PayPal_Pill_Button.png" alt="PayPal" width="120" /> </a> &nbsp;&nbsp;&nbsp;&nbsp; <a href="https://www.buymeacoffee.com/s9giES1" target="_blank"> <img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" width="160"/> </a>