Replace push with add-to-list in layer init functions and related code.
Modify spacemacs|add-toggle to check for and update an existing toggle in
spacemacs-toggles and only create a new toggle if none already existed.
Replace a conditional push onto erc-packages with use of :toggle.
When initializing which-key, set which-key-replacement-alist to its default
or customized setting before adding all the Spacemacs replacements. We
want to keep the stock replacements but avoid adding duplicates of the
Spacemacs replacements.
Replace the emacs-lisp-mode-hook lambda with a named function to avoid
adding duplicate hooks (which can add duplicate definitions of the
evil-surround pair).
Emacs 26.1 will introduce a new native line numbers feature:
"display-line-numbers". It includes relative line numbers, is faster than
current linum-mode, and doesn't use the margin area (it has its own area). So
yeah, we want to use the new feature when possible.
No changes are required on the user side, except for Emacs 26 users are
recommended to remove nlinum layer from their configuration (if they have
enabled it).
With this change:
- Emacs 26:
- uses display-line-numbers by default.
- linum and linum-relative packages are excluded.
- Emacs 25:
- does NOT use display-line-numbers.
- continues to use linum and linum-relative.
- nlinum layer:
- can still be used as before in Emacs 25.
- is NOT recommended in Emacs 26, but can be used.
- when enabled, excludes display-line-numbers.
Also contains some bug fixes:
Fixes a bug where setting `dostpacemacs-line-numbers` to `t` or `relative`
enabled line numbers in every buffer, instead of only in buffers that derive
from prog-mode and text-mode.
Likewise fixes a bug where specifying `:enabled-for-modes nil` (or not
specifying `:enabled-for-modes` at all) in `dotspacemacs-line-numbers` settings
meant "enable in all modes" instead of "enable in modes derived from prog-mode
or text-mode".
Because of this change, also adds a way for users to enable line numbers
in *all* buffers.
Removes check for special buffer. All our current checks should be enough to
enable line numbers only where it makes sense. Disabling in all special buffers
is not necessary.
The `spacemacs//helm-navigation-ts-set-face` function had been changed to call
the face `spacemacs-helm-navigation-ts-face` with `-ts-`, but the face
definition was still called `spacemacs-helm-navigation-ms-face` with `-ms-`.
* Fix various isolated typos
"apppend" -> "append"
"availabe" -> "available"
"Descripti using ternon" -> "Description"
"you have not them" -> "you don't have them"
"new on" -> "new one"
"plained" -> "curved"
"repel" -> "REPL"
"vairable" -> "variable"
* Fix a few errors in the CoffeeScript layer readme
Add a missing "the".
Correct a reference to the layer as "javascript" to "coffeescript".
Fix the syntax on the link to CoffeeLint.
* Fix typos: "dofile" -> "dotfile"
* Fix typos: "formated" and "formating"
"formated" -> "formatted"
"formating" -> "formatting"
* hy: Fix docstrings in funcs.el
Fix copy-and-pasted docstring text for
spacemacs/hy-shell-eval-current-form-and-go and
spacemacs/hy-shell-eval-region-and-go.
* Fix typos: "indendation" -> "indentation"
* Fix typos: "the the", "a a"
Fix duplicated (or misplaced) articles.
* Fix typos: "wether" -> "whether"
* Fix typos: "intialize" -> "initialize"
For now we have an issue with invalid XMP image format when dumping.
So we force utf-8 separator.
spaceline-compile is really long and not really necessary for regular users.
Advanced users must explicitly call spaceline-compile in their dotfile and be
ready to pay a 0.5s penalty when loading emacs.
Before the display system is initialized, we cannot reliably make font
measurements so the height will be incorrect. This lead to display artefacts
if emacs was started in daemon mode without a graphical interface and later a
graphical client was connected (so for example, if you do `emacs --daemon`
followed by `emacsclient -c`).
Reduce the width of the listed key bindings by:
Moving the range and highlighted symbols counter to the right of the transient
state title.
Shorten some key description names.
Reduce three instances of "search" to just one.
And reorder the listed keys based on their search scope, small to large:
swoop, buffers, files, project.
We have key bindings to create two and three column
window layers.
This commit makes available a key binding to return to
the default spacemacs window layer, the single column one.
This idea is to have the spacemacs-base distribution only configure defaults for
built-in packages. Those buit-in packages are now configured in the new layer
spacemacs-defaults.
Additionally some other packages of spacemacs-base have been dispatched to
better suiting spacemacs layers.
Projectile has been moved to the new layer spacemacs-project
- Move the following packages to bootsrap distributio layer:
- exec-path-from-shell
- evil-evilified-state
- holy-mode
- hybrid-mode
- spacemacs-theme
- ace-window has been moved to spacemacs-navigation
- centered-buffer-mode has been moved to spacemacs-editing-visual
- pcre2el has been moved to spacemacs-editing
- evil-escape and evil-visualstar have been moved to spacemacs-evil
This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.
The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
Before the commit 4b111f7701 it was possible to create new perspectives from projects not available on the list.
It would be possible to provide a path to a project that has not been open previously by emacs, and have the perspective created. Now that a match is required, it is not possible anymore, as the path provided is not one of the possible matches on the list.
This commit changes the behavior back to allow accessing projects that have not been visited before. Without this change, one needs to open a specific project first, using `C-x C-e` or `SPC f f` and then switch to the layout.
Fix#10177
counsel-projectile has updated custom actions mechanism[1] and
counsel-projectile-switch-project-actions is no more defined
Also,
- moved counsel-projectile into spacemacs-layouts from ivy layer as
perspective/layout based project switching depends on it instead of swiper
- removed swiper from spacemacs-layouts
[1] a4e9a34d7f
Use `counsel-projectile-switch-project-action` instead of
`projectile-switch-project-by-name`, to match the additional actions available
via `counsel-projectile-switch-project` (SPC p p).
Since we have now a variable for the mode-line theme, it makes sense to move
the scaling of the mode-line to this variable. Thus the property
=:powerline-scale= of variable dotspacemacs-default-font has been removed and
it is replace by the property =:separator-scale= used in the variable
=dotspacemacs-mode-line-theme=.
This commit also adds a the property =:sperator= for the variable
=dotspacemacs-mode-line-theme= which allows to set the separator type.
Example of the final result:
dotspacemacs-mode-line-theme '(all-the-icons
:separator cup
:separator-scale 1.5)
Documentation has been updated to reflect the changes.
New layer variable `dotspacemacs-mode-line-themes`:
Set the theme for the Spaceline. Supported themes are `spacemacs',
`all-the-icons', `custom', `vim-powerline' and `vanilla'. The first three
are spaceline themes. `vanilla' is default Emacs mode-line. `custom' is a
user defined themes, refer to the DOCUMENTATION.org for more info on how
to create your own spaceline theme."
See DOCUMENTATION.org changes for more info.
This commit adds support for `spaceline-all-the-icons` package.
Had to create dummy init functions at some places since the owner of a package
is the last layer that defines the init function of a package. And a package
can be installed only if it has an owner.
Delete layer evil-cleverparens and move the package to spacemacs-evil layer.
The feature is called "Safe structurral editing" for lisp dialects. Support for
it is added via pre-init functions in each of the concerned layer and proper
documentation is added to their README.org files.
This also removes the recently added package evil-smartparens. The goal is
to choose the best package for evil safe structural editing. For now we use
evil-cleverparens as we supported it first, if evil-smartparens is shown to be
a better package we will be able to switch to it.
This is more dwim in the sense that the normal deleting commands now behave more
like paredit, i.e. region deletion is adjusted to always keep the pairs
balanced.
The `helm-split-window-in-side-p` variable has been renamed to:
`helm-split-window-inside-p` here: 8b5df59a14
This caused the following variable `helm-always-two-windows` to become enabled.
There is a space in the buffer name of undo-tree. The popwin did not display right and the function `undo-tree-visualizer-quit` also seems not work well until I correct the buffer name.
In perspective transient state. b and l keys in the docstring have no
corresponding functions declared whenever both helm and ivy layers are not
used.
Add two private variables to fix the issue:
- spacemacs--persp-display-buffers-func
- spacemacs--persp-display-perspectives-func
These variables are set to the correct functions by the helm and ivy layers via
a use-package hook.
Default is `ignore` function so b and l does nothing if both helm and ivy layers
are not used, TODO: we should find a better default function.
This message is shown when Spacemacs starts:
../../Users/Username/AppData/Roaming/.emacs.d/layers/+spacemacs/spacemacs-purpose/local/spacemacs-purpose-popwin/spacemacs-purpose-popwin.el: Obsolete name arg "pupo" to constructor purpose-conf
The name argument, seems to only be needed for Emacs <= 24.3, according to this
line in the emacs-purpose package:
;; the name arg ("purpose-x-code1") is necessary for Emacs 24.3 and older
source:
00ddafcf48/window-purpose-x.el (L71)
The minimum version supported by Spacemacs is 24.4.
When `evil-search-module` is set to:
evil-search:
Then `/` search highlights are cleared by pressing: `SPC s c`,
and `C-s` highlights are cleared with `:noh`.
isearch:
Then `/` highlights are cleared with `M-x evil-ex-nohighlight`,
and `C-s` highlights are cleared with both `SPC s c` and `:noh`.
This replaces the older pattern
:toggle (configuration-layer/package-usedp ..)
This implementation ensures that :disabled-for honors dependent packages, i.e.
if package a depends on package b, which is owned by layer c, and layer c is
disabled for layer d, then neither package a nor b will be configured for layer
d. Previously, this was only true for package a, but not b.
This commit also fixes:
- configuration-layer/describe-package now shows which post-init and pre-init
functions are disabled, if any
- Does not recreate all layer objects unconditionally when calling
configuration-layer/discover-layers. Previously, this led to all layers being
recreated after e.g. `SPC h SPC`, without any of the dotfile information.
Since this information is now necessary for
configuration-layer/describe-package, it’s important that we don’t clear the
indexed layers when invoking this function.
Problem:
Creating a new workspace from the workspaces transient state, requires that one
first looks for the next available workspace number, and then presses that
number key.
Solution:
Add the keys: `c` and `C` to create a new workspace. Lowercase exits the state
and uppercase keeps it open.
Notes:
This matches the behaviour of 0..9, which exits the state, and C-0..C-9, which
keeps it open.
This is the last key/command, from the C-c C-w eyebrowse key bindings, that was
missing from the workspaces transient state.
- bind spacemacs-layouts/non-restricted-buffer-list to SPC b B instead
of SPC B b
- rename buffer listing functions in which-key to be more explicit
PR title:
bindings: non-restricted-buffer-list-* to SPC B b instead of SPC B b
PR message:
I don't know what was the thought behind this, but `spacemacs-layouts/non-restricted-buffers-list-*` was alone in its `SPC B` prefix and `SPC b B` was almost free, only used in one layer that I would be surprised if it was widely used (`ibuffer`).
I also renamed buffers listing functions in `which-key` to be clearer for the user. Indeed, I find that names like `helm-mini` are pretty obscure and kind of defeat the purpose of `which-key` and `spacemacs-layouts-non-restricted-buffer-list-blah` was so long that it couldn't even be displayed.
Now the user can choose between `list-buffers` or `global-list-buffers` for listing buffers.
Group together the which-key entries that call the same command:
k and - becomes k,-
u and _ becomes u,_
Declare a prefix name for SPC x i, this changes the SPC x entry:
from: "i -> +prefix"
to: "i -> +inflection".
Capitalize the transient state title, so that it matches the other TS titles.
Sort the code and documentation key bindings alphabetically.
* restore these functions' signatures to those of their stock evil
counterparts (evil-paste-{before,after}), allowing
`evil-mc-execute-evil-paste` to paste at each cursor when there
are multiple instead of pasting at only one cursor
* retain these functions' ability to directly take a register as
input when called interactively
* regression was caused by bfb565eea9
If dotspacemacs-auto-generate-layout-names is non-nil, and the user
tries to open a layout in a position that doesn't yet have a layout,
then create a new layout with an automatically generated name.
* Make RET and TAB (C-m and C-i) perform the same actions as <return>
and <tab> so the maps work in the terminal.
* Catch <return> in workspaces transient state so that it exits without
executing a command (like already done for layouts).
* Add "workspace w/helm/ivy" to docstring, mirroring the layouts
docstring.
Problem:
Spacemacs rewrites the evil-mc-mode-line variable, to remove the evil-mc mode
line text, when there's only one cursor. The rewrite blocks the recent evil-mc
updates, that made the multi cursor, mode line text, more readable.
Solution:
Use the new evil-mc-one-cursor-show-mode-line-text variable, to only hide the
mode line text, when there's one cursor. This unblocks the current, and any
future updates, that the evil-mc package makes to the mode line text.
Add two new functions: `spacemacs/transient-state-register-add-bindings`
and `spacemacs/transient-state-register-remove-bindings` to prevent layer
authors and end users from dealing with the underlying variables' subtleties.
Pasting in evil-mode has been broken since
`58458f2d2abcc1211444c2060ab598f55e518da4`, as `p` and `P` would always paste
from the unnamed register instead of the register selected with `"`. I've
removed the function's second parameter, as it wasn't being used anywhere.
Fixes#8759
Highlight should already be done automatocally.
This highlight is not desirable because it breaks `n` and `N` search of
occurences and it breaks `:nohl:` as well making it impossible to revert an
highlighted word.
These drawbacks were maybe intentional since it was about highlighting
_permanently_ but it goes against principle of least astonishement, users will
be consufed about an highlight that cannot be reverted whatsoever.
We need an highlighting facility in Spacemacs, there was one at some point with
the package `hl-anything` but at the time it was buggy and removed from
Spacemacs (see layer spacemacs-editing-visual). Maybe we could try it again.
Lines containing a carriage return alone, followed by color escape
sequences, are not colorized properly.
A carriage return in the compilation buffer is interpreted by erasing
contents since the beginning of the line, but compilation-filter-start
is not updated accordingly before calling the filter-hooks.
Workaround it by always colorizing a region from to the beginning of the
line where compilation-filter-start points.
Create new layers:
- spacemacs-navigation: contains packages whose principal goal is navigation
- spacemacs-modeline: contains packages about mode line
Merge spacemacs-ui and spacemacs-ui-visual into layer spacemacs-visual.
The unimpaired keybindings `[ q` and `] q` can be used to jump to flycheck
errors in the current buffer. Because evil-repeat treated them as regular
operations, they were repeated when pressing the `.` key. This made it harder to
rename multiple erroneous variables.
Weirdly, the `'` keybind for `neotree-mode-map` was already present when
doing `M-x neotree-quick-look` with the cursor on the neotree window but
I could not find where exactly it was defined.
This commit officially adds it to the `neotree-mode-map` and the neotree
transient state.
There was an error in `linum-on` when `dotspacemacs-line-numbers` was set to
`'relative`.
- new function `spacemacs//linum-backward-compabitility` to test for old
supported values.
- Use an :around advice for `linum-on` instead of redefining it.
- move linum init time config to `:init` section of `use-package`
- fix relative linum initialization by testing if `dotspacemacs-line-numbers` is
a list first.