spacemacs_module_for_doom
spacemacs_module_for_doom copied to clipboard
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
#+attr_org: :width 600px [[file: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.
- Setup as Doom Private Module (new method, more "doom-way") If you find missing packages, welcome PR or request an Issue.
- 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.
-
Clone #+begin_src sh git clone [email protected]:chenyanming/spacemacs_module_for_doom.git ~/.doom.d/modules/private/spacemacs #+end_src or #+begin_src sh git clone [email protected]:chenyanming/spacemacs_module_for_doom.git ~/.emacs.d/modules/private/spacemacs #+end_src
-
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. #+BEGIN_SRC emacs-lisp (window-select ; visually switch windows +numbers) #+END_SRC
- Important: Please enable =hydra= in ~init.el~ #+BEGIN_SRC emacs-lisp :ui hydra #+END_SRC
- To enable the spacemacs like dashboard, comment out ~doom-dashboard~.
- To disable default doom keybindings, delete ~+bindings~, in ~:config default~ module.
-
Setup ~/.doom.d/config.el
- To enable the spacemacs like dashboard, add this: #+begin_src emacs-lisp (add-hook 'doom-init-ui-hook #'spacemacs/home) #+end_src
- 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: #+begin_src elisp (remove-hook 'org-load-hook #'+org-init-keybinds-h) #+end_src
-
Quit Emacs and Run #+begin_src sh ~./emacs.d/bin/doom sync #+end_src
-
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 #+begin_src sh git clone [email protected]:chenyanming/spacemacs_module_for_doom.git ~/.doom.d/modules/spacemacs #+end_src
Then follow the following sections one by one, there are 5 steps:
- Setup ~init.el~
- Setup ~package.el~
- Adjust ~config.el~ (This module's ~config.el~)
- Setup ~config.el~
- 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. #+BEGIN_SRC emacs-lisp (window-select ; visually switch windows +numbers) #+END_SRC
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~
#+BEGIN_SRC emacs-lisp (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 #+END_SRC *** 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: #+begin_src emacs-lisp (add-hook 'doom-init-ui-hook #'spacemacs/home) #+end_src
- 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: #+begin_src elisp (remove-hook 'org-load-hook #'+org-init-keybinds-h) #+end_src
*** 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~: #+BEGIN_SRC emacs-lisp (setq hydra-hint-display-type 'posframe) #+END_SRC
** Restart Emacs Finally restart emacs~
Enjoy~
** Current status
- Some Default spacemacs leader keybindings.
- spacemacs-editing
- spacemacs-layouts
- spacemacs-navigation
- spacemacs-defaults
- spacemacs-evil
- org layer keybindings.
- Github layer keybindings.
- PDF layer keybindings.
- epub layer keybindings.
- dash layer keybindings.
- 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-+~
- JavaScript layer major mode keybindings.
- Spacemacs Like Dashboard.