18 KiB
Frequently Asked Questions
- Common
- Which version of Spacemacs am I running?
- What is the official pronunciation of Spacemacs?
- Why are packages installed with
package-install
automatically deleted by Spacemacs when it boots? - The Spacemacs banner is ugly, what should I do?
- The powerline separators are ugly, how can I fix them?
- The powerline separators have no anti-aliasing, what can I do?
- Why is after-init-hook not executed?
- What is the difference between
spacemacs-base
andspacemacs
distributions? - Should I place my settings in
user-init
oruser-config
? - Why do some of my
org
-related settings cause problems? - Why is Spacemacs hanging on startup?
- Why does
helm-M-x
(SPC :
) not accept the prefix argument? - Why does my color theme not render correctly in terminal mode?
- How do I…
- Install a package not provided by a layer?
- Disable a package completely?
- Disable a package only for a specific major-mode?
- Disable company for a specific major-mode?
- Change special buffer rules?
- Enable navigation by visual lines?
- Disable evilification of a mode?
- Include underscores in word motions?
- Setup
$PATH
? - Change or define an alias for an
evil-leader
prefix? - Restore the sentence delimiter to two spaces?
- Prevent the visual selection overriding my system clipboard?
- Make spell-checking support curly quotes (or any other character)?
- Windows
- OS X
Common
Which version of Spacemacs am I running?
The version is displayed on the upper right corner of the loading screen. You
may also just type SPC f e v
.
What is the official pronunciation of Spacemacs?
As it is written, that is space then macs.
Why are packages installed with package-install
automatically deleted by Spacemacs when it boots?
To declare new packages you have to create a new configuration layer, see the quick start guide.
The Spacemacs banner is ugly, what should I do?
Install the default font supported by Spacemacs or choose a fixed width font. More information in the font section of the documentation.
The powerline separators are ugly, how can I fix them?
Use the property :powerline-scale
of the variable dotspacemacs-default-font
.
See font section of the documentation for more details.
The powerline separators have no anti-aliasing, what can I do?
Emacs powerline uses XMP images to draw the separators in a graphical
environment. You can have anti-aliasing if you use the utf8
separator. Note
that by default the utf8
separator is used in a terminal. See the powerline
section in the font section of the documentation.
Why is after-init-hook not executed?
Don't launch Spacemacs with emacs -q -l init.el
command. This command will run
the hooked function in after-init-hook
before the evaluation of the passed -l
init.el
file.
What is the difference between spacemacs-base
and spacemacs
distributions?
The distribution
concept was introduced in 0.104.x. You can now choose
between two distributions spacemacs
or spacemacs-base
.
spacemacs-base
contains only a minimal set of packages; whereas spacemacs
is the full Spacemacs experience.
Set the distribution with dotspacemacs-distribution
variable. The default is
spacemacs
. For more information as to what is included,
check out the packages.el
file in the respective folders in the
+distribution
folder of the layers/
directory.
Should I place my settings in user-init
or user-config
?
Any variable that layer configuration code will read and act on must be set
in user-init
, and any variable that Spacemacs explicitly sets but you wish to
override must be set in user-config
.
Anything that isn't just setting a variable should 99% be in user-config
.
Why do some of my org
-related settings cause problems?
Since version 0.104, spacemacs uses the org
version from the org ELPA
repository instead of the one shipped with emacs. Then, any org
related code
should not be loaded before dotspacemacs/user-config
, otherwise both versions
will be loaded and will conflict.
Because of autoloading, calling to org
functions will trigger the loading up
of the org
shipped with emacs wich will induce conflicts.
One way to avoid conflict is to wrap your org
config code in a
with-eval-after-load
block like this:
(with-eval-after-load 'org
;; here goes your Org config :)
;; ....
)
Why is Spacemacs hanging on startup?
This is probably related to Helm using Tramp which tries to figure out some SSH/DNS settings at startup. The root cause is probably your ISP redirecting non-existing addresses to their own servers.
Try using these settings in the user-init
function in your .spacemacs
configuration:
(setq tramp-ssh-controlmaster-options
"-o ControlMaster=auto -o ControlPath='tramp.%%C' -o ControlPersist=no")
See issue #3422 and helm issue #1000 for details. If for any reason this code is
not working, you can try to put these settings directly in ~/.ssh/config
:
Host *
ControlMaster auto
ControlPath ~/.ssh/master -%r@%h:%p
ControlPersist = no
Why does helm-M-x
(SPC :
) not accept the prefix argument?
If you try to run helm-M-x
with the prefix argument (i.e. SPC u SPC :
) it
will fail with this message:
Error: Specifying a prefix arg before calling helm-M-x
Instead, call helm-M-x
first, select the command you want to run, and press
C-u
before pressing RETURN
. For instance: SPC : org-reload C-u RET
Why does my color theme not render correctly in terminal mode?
In the terminal version of Emacs, color themes will not render correctly as colors are rendered by the terminal and not by emacs. You will probably have to change your terminal color palette. More explanations can be found on emacs-color-theme-solarized webpage.
How do I…
Install a package not provided by a layer?
Spacemacs provides a variable in the dotspacemacs/layers
function in
.spacemacs
called dotspacemacs-additional-packages
. Just add a package name
to the list and it will be installed when you reload your configuration with
SPC f e R
, or at the next Spacemacs launch.
Disable a package completely?
To completely disable a package and effectively uninstalling it even if
it is part of your used layers, look for the variable
dotspacemacs-excluded-packages
in your dotfile and add the package
name to it:
(setq-default dotspacemacs-excluded-packages '(package1 package2 ...))
Disable a package only for a specific major-mode?
This is done by removing the hook added by Spacemacs. For example to
remove flycheck
support in python buffers, look for the function
dotspacemacs/user-config
in your dotfile and add the following code:
(remove-hook 'python-mode-hook 'flycheck-mode)
Hint to know the name of the major-mode of the current buffer press:
SPC h d v major-mode RET
Disable company for a specific major-mode?
It may be handy to disable company
for a given mode if you plan on
configuring auto-complete
instead. One easy way to do it is to use the
macro spacemacs|disable-company
in the function dotspacemacs/user-config
of your dotfile. The following snippet disables company for
python-mode
:
(spacemacs|disable-company python-mode)
Change special buffer rules?
To change the way spacemacs marks buffers as useless, you can customize
spacemacs-useless-buffers-regexp
which marks buffers matching the
regexp as useless. The variable spacemacs-useful-buffers-regexp
marks
buffers matching the regexp as useful buffers. Both can be customized
the same way.
Examples:
;; Only mark helm buffers as useless
(setq spacemacs-useless-buffers-regexp '("\\*helm\.\+\\*"))
;; Marking the *Messages* buffer as useful
(push "\\*Messages\\*" spacemacs-useful-buffers-regexp)
Enable navigation by visual lines?
Add the following snippet to your dostpacemacs/config
function:
;; Make evil-mode up/down operate in screen lines instead of logical lines
(define-key evil-motion-state-map "j" 'evil-next-visual-line)
(define-key evil-motion-state-map "k" 'evil-previous-visual-line)
;; Also in visual mode
(define-key evil-visual-state-map "j" 'evil-next-visual-line)
(define-key evil-visual-state-map "k" 'evil-previous-visual-line)
Disable evilification of a mode?
You can ensure a mode opens in emacs state by using evil-set-initial-state
.
(evil-set-initial-state 'magit-status-mode 'emacs)
You can also do this using buffer name regular expressions. E.g. for magit, which has a number of different major modes, you can catch them all with
(push '("*magit" . emacs) evil-buffer-regexps)
This should make all original magit bindings work in the major modes in
question. To enable the leader key in this case, you may have to define a
binding in the mode's map, e.g. for magit-status-mode
,
(with-eval-after-load 'magit
(define-key magit-status-mode-map
(kbd dotspacemacs-leader-key) evil-leader--default-map))
Include underscores in word motions?
You can modify the syntax table of the mode in question. For example, for Python mode:
(with-eval-after-load 'python
(modify-syntax-entry ?_ "w" python-mode-syntax-table))
Setup $PATH
?
Some layers require certain tools to be available on your $PATH
. This means
that your $PATH
must contain the installation paths for those tools. For
example, if you have installed some tools to ~/.local/bin
and want them to be
available in Spacemacs, you need to add ~/.local/bin
to your $PATH
.
Users of bash
, zsh
, sh
and other similar shells should add following line
to their .bashrc
(.zshrc
, .profile
or your shell's equivalent). Note that
the export
part is very important.
export PATH=~/.local/bin:$PATH
Users of fish
should add following line to their config.fish
file (should be
in $XDG_CONFIG_HOME
or its default value - ~/.config/fish
). Note that -x
part is very important.
set -x PATH ~/.local/bin $PATH
Users of other shells should consult its documentation on how to setup $PATH
variable (with export to environment).
So now, ~/.local/bin
should be available in your $PATH
. You can verify this
by calling echo $PATH
. But you also should verify that $PATH
is set properly
in your environment. To do so call following command in your terminal.
$ env | grep "PATH"
This is the value that will be used by Emacs. So it must contain ~/.local/bin
.
After that you can run Spacemacs and check that it properly gets the value of
$PATH
by running M-: (getenv "PATH")
.
Note that having ~/.local.bin
in your $PATH
also means that it's possible to
run terminal and call tools from ~/.local/bin
without specifying their full
path. Under certain conditions you might want to avoid modifying your $PATH
.
In that case you have the option of updating the value of exec-path
in the
dotspacemacs/user-config
function of your .spacemacs
file.
(add-to-list 'exec-path "~/.local/bin/")
Change or define an alias for an evil-leader
prefix?
It is possible to change an evil-leader
prefix by binding its keymap to
another sequence. For instance, if you want to switch SPC S
(spelling) with
SPC d
(used by dash) to make the former easier to reach, you can use:
(defun my-evil-leader/swap-keys (key1 key2)
(let ((map1 (lookup-key evil-leader--default-map key1))
(map2 (lookup-key evil-leader--default-map key2)))
(evil-leader/set-key key1 map2 key2 map1)))
(my-evil-leader/swap-keys "S" "d")
If you want to define your own alias, like using SPC é
(because it's an
unmapped key on your keyboard-layout for instance) for accessing SPC w
(windows management), you can use this:
(defun my-evil-leader/alias-of (key1 key2)
(let ((map (lookup-key evil-leader--default-map key2)))
(evil-leader/set-key key1 map)))
(my-evil-leader/alias-of "é" "w")
Restore the sentence delimiter to two spaces?
To restore the sentence delimiter to two spaces, add the following code to the
dotspacemacs/user-init
function of your .spacemacs
:
(setq sentence-end-double-space t)
Prevent the visual selection overriding my system clipboard?
On some operating systems, there is only one clipboard for both copied and
selected texts. This has the consequence that visual selection – which
should normally be saved to the PRIMARY clipboard – overrides the SYSTEM
clipboard, where normally goes the copied text. This can be corrected by
adding the following code to the dotspacemacs/user-config
of your
.spacemacs
:
(fset 'evil-visual-update-x-selection 'ignore)
Make spell-checking support curly quotes (or any other character)?
To have spell-checking support curly quotes (or any other character), you need
to add a new entry to ispell-local-dictionary-alist
, by adding for example the
following code in the dotspacemacs/user-config
of your .spacemacs
:
(add-to-list 'ispell-local-dictionary-alist
(quote ("my_english" "[[:alpha:]]" "[^[:alpha:]]" "['’]" t ("-d" "en_US") nil utf-8)))
You can then add any regular expression you want in the fourth argument (i.e.
add a symbol within ['’]
) to make it supported. Consult the help of
ispell-dictionary-alist
for more details about the possibilities.
You finally have to set my_english
as your ispell-local-dictionary
in order
to use the dictionary supporting your newly added characters.
Windows
Why do the fonts look crappy on Windows?
You can install MacType on Windows to get very nice looking fonts. It is also recommended to disable smooth scrolling on Windows.
Why is there no Spacemacs logo in the startup buffer?
Why are all packages unavailable?
Check if your Emacs has HTTPS capabilities by doing M-:
and then:
(gnutls-available-p)
If this returns nil
, you need to install the GnuTLS DDL file in the same
directory as Emacs. See here for instructions.
The powerline isn't shown correctly when Spacemacs is used within PuTTY
.
You can follow this explanation explaining how to correct this.
OS X
Why are the powerline colors not correct on OS X?
This is a known issue as of Emacs 24.4 due to ns-use-srgb-colorspace
defaulting to true. It is recommended to use the emacs-mac-port build. See the
install section in the README for more details.