• Stars
    star
    146
  • Rank 252,855 (Top 5 %)
  • Language
    Emacs Lisp
  • Created over 4 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Aim to port spacemacs features (defaults keybinding, transient state, layers and more) to doom, and provides a spacemacs module for doom.

spacemacs module for doom emacs

img/home.png

Aim to port spacemacs features (keybindings, transient states, layers etc) to doom, and provides a spacemacs module for doom emacs.

Performance

I personally use it every day, and it works really great with doom.

Startup Time

Estimate that it costs around 0.2 ~ 0.3 second.

How to setup?

There are two ways to setup this module, you can choose either one.

  1. Setup as Doom Private Module (new method, more “doom-way”) If you find missing packages, welcome PR or request an Issue.
  2. Load this module directly (old method, you can clone and hack anything if you like)

Setup as Doom Private Module

This is the new method to enable as a private Doom module. It is the easiest way to setup.

  1. Clone
    git clone [email protected]:chenyanming/spacemacs_module_for_doom.git ~/.doom.d/modules/private/spacemacs
        

    or

    git clone [email protected]:chenyanming/spacemacs_module_for_doom.git ~/.emacs.d/modules/private/spacemacs
        
  2. Setup ~/.doom.d/init.el
    • Add :private spacemacs into init.el after :default group - the end of doom! section, so that all necessary modules are loaded before spacemacs module
    • In order to use the windows transient state properly (SPC w w if windows numbers >=3), please add +numbers for windows-select module.
    (window-select     ; visually switch windows
            +numbers)
        
    • Important: Please enable hydra in init.el
    :ui
    hydra
        
    • To enable the spacemacs like dashboard, comment out doom-dashboard.
    • To disable default doom keybindings, delete +bindings, in :config default module.
  3. Setup ~/.doom.d/config.el
    • To enable the spacemacs like dashboard, add this:
      (add-hook 'doom-init-ui-hook #'spacemacs/home)
              
    • Spacemacs dashboard may consume 0.2 second to boot after testing.
    • Configure dotspacemacs-startup-banner, dotspacemacs-startup-lists to control the dashboard details.
    • To disable doom org keybindings, add this:
      (remove-hook 'org-load-hook #'+org-init-keybinds-h)
              
  4. Quit Emacs and Run
    ~./emacs.d/bin/doom sync
        
  5. Restart Emacs.

Load this module directly

This is the old method to enable as a Doom module, it is more complicated but more easy to hack.

Clone the module

git clone [email protected]:chenyanming/spacemacs_module_for_doom.git ~/.doom.d/modules/spacemacs

Then follow the following sections one by one, there are 5 steps:

  1. Setup init.el
  2. Setup package.el
  3. Adjust config.el (This module’s config.el)
  4. Setup config.el
  5. Quit Emacs and Run ./emacs.d/bin/doom sync

Setup ~/.doom.d/init.el

Enable necessary modules in init.el. Make sure enable the necessary modules in init.el.

At lease evil, org, gist, pdf, lookup, workspaces, eshell, and javascript etc.

In order to use the windows transient state properly, please add +numbers for windows-select module.

(window-select     ; visually switch windows
        +numbers)

To enable the spacemacs like dashboard, comment out doom-dashboard.

To disable default doom keybindings, delete +bindings, in :config default module.

Setup ~/.doom.d/packages.el

And install the missing packages in packages.el

(package! nov) ;; for epub layer
(package! auto-highlight-symbol) ;; for spacemacs-navigation
(package! eyebrowse) ;; for spacemacs-layouts
(package! bm) ;; for bm layer
(package! evil-iedit-state) ;; for spacemacs-navigation
(package! bind-map)
(package! symbol-overlay)
(package! move-text) ;; for spacemacs-editing
(package! string-inflection) ;; for spacemacs-editing
(package! forge) ;; for github layer
(package! evil-terminal-cursor-changer) ;; for spacemacs evil
(package! eshell-prompt-extras) ;; for shell layer

IMPORTANT: Adjust this module’s config.el (+spacemacs.el bofore) based on your need

Since this package only simply load the necessary layer files and call their init functions, you can comment out them in this module’s config.el if necessary.

Setup ~/.doom.d/config.el

  • Load the this module’s config.el: (load! "~/.doom.d/modules/spacemacs/config") ; important, since I use load-file-name to determine the module location.
  • To enable the spacemacs like dashboard, add this:
    (add-hook 'doom-init-ui-hook #'spacemacs/home)
        
  • Spacemacs dashboard may consume 0.2 second to boot after testing.
  • Configure dotspacemacs-startup-banner, dotspacemacs-startup-lists to control the dashboard details.
  • To disable doom org keybindings, add this:
    (remove-hook 'org-load-hook #'+org-init-keybinds-h)
        

Quit Emacs and Run ~/emacs.d/bin/doom sync

Then sync the doom.

Please notice: If you want to keep sync with my commits, every time you do git pull, you should better run ./emacs.d/bin/doom sync again, in case the packages.el is updated.

Notes on transient states

Spacemacs’s transient states are based on hydra, while it seems has some problems with doom. I am trying to fix it. You can choose message, lv, or posframe in config.el e.g. to choose posframe:

(setq hydra-hint-display-type 'posframe)

Restart Emacs

Finally restart emacs~

Enjoy~

Current status

  1. Some Default spacemacs leader keybindings.
    • spacemacs-editing
    • spacemacs-layouts
    • spacemacs-navigation
    • spacemacs-defaults
    • spacemacs-evil
  2. org layer keybindings.
  3. Github layer keybindings.
  4. PDF layer keybindings.
  5. epub layer keybindings.
  6. dash layer keybindings.
  7. Some transient states:
    • Windows Transient State: SPC-w-.
    • Symbol Overlay Transient State: SPC-s-o
    • Symbol Highlight Transient State: SPC-s-h / * / #
    • Buffer Transient State: SPC-b-.
    • Error Transient State: SPC-e-.
    • Font Scaling Transient State: SPC-z-x
    • Frame Transparency Transient State: SPC-T-T
    • Layouts Transient State: SPC-l
    • Workspaces Transient State: SPC-l-w
    • BM Transient State: SPC-a-b
    • VCS Transient State: SPC-g-.
    • Git Timemachine Transient State: SPC-g-t
    • Move Text Transient State: SPC-x-J, SPC-x-K
    • String Inflection Transient State: SPC-x-i-i
    • Fold Transient State: SPC-z-.
    • Evil number Transient State: SPC-n-+
  8. JavaScript layer major mode keybindings.
  9. Spacemacs Like Dashboard.