2018-05-06 04:38:31 +00:00
|
|
|
#+TITLE: Spacemacs experimental features
|
|
|
|
|
|
|
|
* Table of contents :TOC_4_gh:noexport:
|
|
|
|
- [[#spacemacs-dumps-using-the-portable-dumper][Spacemacs dumps using the portable dumper]]
|
2018-05-06 16:13:58 +00:00
|
|
|
- [[#setup][Setup]]
|
|
|
|
- [[#clone-emacs][Clone Emacs]]
|
|
|
|
- [[#compile-emacs-from-source][Compile Emacs from source]]
|
|
|
|
- [[#macos][MacOS]]
|
|
|
|
- [[#update-your-dotfile][Update your dotfile]]
|
|
|
|
- [[#test][Test]]
|
|
|
|
- [[#report-issues][Report issues]]
|
|
|
|
- [[#usage][Usage]]
|
2018-05-06 04:38:31 +00:00
|
|
|
|
|
|
|
* Spacemacs dumps using the portable dumper
|
|
|
|
The portable dumper is a feature that may be availabe with Emacs 27.1, for now
|
|
|
|
its code is in the =pdumper= branch of the Emacs Git repository, it has not been
|
|
|
|
merged to master yet.
|
|
|
|
|
|
|
|
This should theoretically work on all the three major OSes: GNU/Linux, MacOS and
|
|
|
|
Windows.
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
** Setup
|
2018-05-06 04:38:31 +00:00
|
|
|
To test the portable dumper with Spacemacs, follow these steps:
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
*** Clone Emacs
|
2018-05-06 04:38:31 +00:00
|
|
|
Clone Emacs from [[https://git.savannah.gnu.org/git/emacs.git]]:
|
|
|
|
|
|
|
|
#+BEGIN_SRC shell
|
|
|
|
git clone https://git.savannah.gnu.org/git/emacs.git
|
|
|
|
cd emacs
|
|
|
|
git checkout pdumper
|
|
|
|
#+END_SRC
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
*** Compile Emacs from source
|
2018-05-06 04:38:31 +00:00
|
|
|
This step depends on your OS (please create a PR to add the instructions for
|
|
|
|
your OS).
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
**** MacOS
|
2018-05-06 04:38:31 +00:00
|
|
|
In the root directory of your freshly cloned Emacs repository and with the
|
|
|
|
=pdumper= branch as the current branch:
|
|
|
|
|
|
|
|
#+BEGIN_SRC shell
|
|
|
|
./configure --with-ns --with-dbus --with-gnutls --with-imagemagick --with-rsvg --with-mailutils --with-xml2 --with-modules
|
|
|
|
make -j 8
|
|
|
|
#+END_SRC
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
*** Update your dotfile
|
2018-05-06 04:38:31 +00:00
|
|
|
A new user dotfile function has been added which is called before doing the
|
|
|
|
dump. The function name is =dotspacemacs/user-load=.
|
|
|
|
|
|
|
|
You can copy/paste the following snippet in your dotfile and provide a
|
|
|
|
value for =dotspacemacs-emacs-pdumper-executable-file= which must point to
|
|
|
|
the Emacs executable you compiled at the previous step. For me it was:
|
|
|
|
"~/dev/emacs/src/emacs"
|
|
|
|
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
|
|
(defun dotspacemacs/user-load ()
|
|
|
|
"Library to load while dumping.
|
|
|
|
This function is called while dumping Spacemacs configuration. You can
|
|
|
|
`require' or `load' the libraries of your choice that will be included
|
|
|
|
in the dump."
|
|
|
|
(setq-default
|
|
|
|
|
|
|
|
;; Absolute file path pointing to emacs 27.1 executable compiled with support
|
|
|
|
;; for the portable dumper (this is currently the branch pdumper)
|
|
|
|
;; If nil then automatic Emacs dump is disabled.
|
|
|
|
;; (default nil)
|
|
|
|
dotspacemacs-emacs-pdumper-executable-file nil
|
|
|
|
|
|
|
|
;; File path of Spacemacs dump file. This is the file created by the portable
|
|
|
|
;; dumper. To load it when starting Emacs add the parameter `--dump-file'
|
|
|
|
;; when invoking Emacs 27.1 executable on the command line, for instance:
|
2018-05-06 04:51:07 +00:00
|
|
|
;; ./emacs --dump-file=spacemacs.pdump
|
2018-05-06 04:38:31 +00:00
|
|
|
;; If the file path is relative, it will be relative to the directory pointed
|
|
|
|
;; by `dotspacemacs-emacs-pdumper-executable-file'.
|
2018-05-06 04:51:07 +00:00
|
|
|
;; (default spacemacs.pdmp)
|
2018-05-06 04:38:31 +00:00
|
|
|
dotspacemacs-emacs-dumper-dump-file "spacemacs.pdmp"))
|
|
|
|
#+END_SRC
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
*** Test
|
2018-05-06 04:38:31 +00:00
|
|
|
Checkout the =moon= branch in `.emacs.d` and launch your Emacs as you usually
|
|
|
|
do. It can be Emacs 25.1 or later this is not important but obviously you can
|
|
|
|
also use the compiled Emacs version.
|
|
|
|
|
|
|
|
Each time Emacs starts, Spacemacs will check if the list of your layers has
|
|
|
|
changed, if it has changed then Emacs will be automatically dumped for you in
|
|
|
|
an asynchronous process. The buffer for the output of the process is named
|
|
|
|
=*spacemacs dumper*=.
|
|
|
|
|
|
|
|
If you have no error during the dump you can test it out!
|
|
|
|
|
|
|
|
To actually start Spacemacs with the compiled Emacs 27.1 and the Spacemacs dump,
|
|
|
|
on the command line in the =src= directory of the cloned Emacs source:
|
|
|
|
|
|
|
|
#+BEGIN_SRC shell
|
|
|
|
./emacs --dump-file=spacemacs.pdmp &
|
|
|
|
#+END_SRC
|
|
|
|
|
2018-05-06 16:13:58 +00:00
|
|
|
*** Report issues
|
2018-05-06 04:38:31 +00:00
|
|
|
If you want to report an issue regarding this new feature please use the label
|
|
|
|
=Portable Dumper=.
|
|
|
|
|
|
|
|
All the related issues can be found with [[https://github.com/syl20bnr/spacemacs/labels/Portable%20Dumper][this link]].
|
2018-05-06 16:13:58 +00:00
|
|
|
|
|
|
|
** Usage
|
|
|
|
Once =dotspacemacs-emacs-pdumper-executable-file= is set to a non-nil and valid
|
|
|
|
file path to an Emacs 27.1 executable Emacs will be redumped automatically each
|
|
|
|
time the layer list changes or the =--force-dump= parameter is passed on the
|
|
|
|
command line.
|
|
|
|
|
|
|
|
To use the created dump file, open a shell in the =src= directory of the cloned
|
|
|
|
Emacs source and type:
|
|
|
|
|
|
|
|
#+BEGIN_SRC shell
|
|
|
|
./emacs --dump-file=spacemacs.pdmp &
|
|
|
|
#+END_SRC
|
|
|
|
|
|
|
|
=spacemacs.pdmp= corresponds the value of the variable
|
|
|
|
=dotspacemacs-emacs-dumper-dump-file=.
|