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.
Hide properties in space-doc-mode to allow the use of `CUSTOM_ID` tags in
documentation for correct link exporting, as discussed in #8054, #8136
and #8138. Complementary the latter two PR:s.
winum.el is an heavily extended and partly rewritten version of
window-numbering.el.
Among other things it allows window numbers to be shared across frames,
thus improving multi-screen user experience.
This commit adds a conditional which allows `dumb-jump` to use a selector
matching the current completion framework used (`ivy` or `helm`), instead
of the default popup. This relates to work done for adding Helm support
to `dumb-jump` here: https://github.com/jacktasia/dumb-jump/pull/96
The motivation behind this is two-fold: the fact that popups are known
to be broken when used with conflicting packages, such as `fci-mode` for
showing a column marker, and the need for better completions with the
possiblity for fuzzy-matching. This should hopefully lead to a more
consistent experience as well.
CHANGES
-------
Add new keybinding to neotree to allow the copying of nodes from the neotree
buffer. Update documentation as well.
WHY
-------
There appear to be all other common file operations bound to the neotree buffer,
however copying of a node is not.
With a nil value for dotspacemacs-switch-to-buffer-prefers-purpose,
switch-to-buffer prefers using the current window, same as vanilla
Emacs. With a non-nil value, switch-to-buffer prefers another window
with the same purpose as the buffer. This affects actions like
spacemacs/alternate-buffer, and opening buffers from Dired.
spacemacs/disable-vi-tilde-fringe and
spacemacs/disable-vi-tilde-fringe-read-only are used by spacemacs-evil,
but were defined in spacemacs-ui-visual. Move the definitions to the
correct place.
Both the spacemacs/neotree-expand-or-open and spacemacs/neotree-collapse
functions had the same comment: "Collapse a neotree node."
This renames the spacemacs/neotree-expand-or-open function to:
"Expand or open a neotree node."
Also remove the check on purpose-mode. Using the purpose layer without
purpose-mode does not make sense so I prefer to throw an error is such
case happens.
Update README.org and add spacemacs-purpose layer to spacemacs
distribution.
Move functions of the layer to funcs.el and prefix variables and
functions introduced by the layer with `spacemacs`.
Update current layout's workspaces before saving layouts to file (fixes
7214).
Load current layout's workspaces after loading layouts from file, if it's
one of the loaded layouts (fixes 6979).
This commit defines:
- spacemacs-default-jump-handlers: a list of functions that can jump to
definition in ALL modes.
- spacemacs-jump-handlers-MODE: a list of functions that can jump to
definition in MODE.
- spacemacs-jump-handlers: a buffer-local list of functions that can
jump to definition. This is made up of the values of the two previous
variables whenever a given major mode is activated.
- spacemacs/jump-to-definition: a function that tries each function in
spacemacs-jump-handlers in order, and stops when one of them takes us
somewhere new.
- spacemacs|define-jump-handlers: a macro that
* defines spacemacs-jump-handlers-MODE, possibly filled with initial
functions
* defines a function that is added to the hook of the given MODE
* binds “SPC m g g” of that MODE to spacemacs/jump-to-definition
This is an attempt to harmonize all the different approaches to jumping.
Specifically,
- Existing intelligent jump packages that work for only a single mode
should go to the beginning of spacemacs-jump-handlers-MODE. E.g.
anaconda for python, ensime for scala, etc.
- Packages like gtags that work for several modes (but potentially not
all) and which is dumber than the intelligent jumpers should go the
the END of spacemacs-jump-handlers-MODE.
- Packages like dumb-jump that work for all modes should go to
spacemacs-default-jump-handlers.
In all cases the order of the jump handlers in each list should be from
most to least intelligent.
Fixes#6619
This fixes two issues regarding layouts.
1. Since Bad-ptr/persp-mode.el@e950bf15, persp-mode requires setting
persp-hook-up-emacs-buffer-completion in order to install the hooks for
ido & friends. This variable is nil by default, making SPB b b not
restrict to layout-local buffers.
2. The function spacemacs-layouts/non-restricted-buffer-list removes a
hook and re-adds it later. This makes the assumption that the hook was
already present. If it was not (due to 1) then SPC B b changes global
state by adding that hook. Instead, just let-bind the hook variable
for the scope we need it changed.
This explains and partially fixes#5788 and #6266. It does not fix the
dependency on ido-mode. If ido-mode is excluded, persp-mode will not
install the hook for ido, and SPB b b will still be unrestricted.
Introduce a new customization variable
`spacemacs-spaceline-additional-segments', which is a list of the
additional segments that should be inserted in the modeline when it is
initialized.
Prevent next-buffer, other-buffer, etc. from choosing useless buffers.
No need for spacemacs/next-useful-buffer,
spacemacs/previous-useful-buffer anymore.
Also fix spacemacs/alternate-buffer to respect buffer-predicate.
When spacemacs-layouts is used, buffer-predicate filters useful buffer
that belong to the current layout.
Choose to inherit from face lazy-highlight instead of region.
Ideally a theme should not set lazy-highlight to the same face as
region.
Also move some function to funcs.el and remove some empty lines.
For example, creating new custom layout `["e" . "Name"]` clashes with
`["e" . "Spacemacs"]`. After override `SPC l o` should not show both of
them, but only the override.
The motivation is to clean redundent actions and bring more consistency
between `SPC b` and `SPC w` by:
- using capital letters for ace-window actions
- reusing the same letters between window and buffer when possible
- adding support for universal prefix argument to delete both window
and buffer
Details of changes:
Buffer
- `SPC b k` has been removed since the functionality is
available directly in Helm by selecting the kill buffer action
- `SPC b m` (buffer move) has been removed because the functionality
is available via `SPC w` with `SPC w h/j/k/l`, `SPC w H/J/K/L` and
`SPC w M` (see window section for the new `SPC w M`).
- `SPC b K` (kill other buffers) is now `SPC b m` to map with `SPC w m`
(kill other window or maximize). Using the universal prefix argument
`SPC u SPC b m` will also kill the windows.
- `SPC b C-k` (kill buffer matching regexp) is now simply on `SPC b k`.
- `SPC b D` now kills a buffer using ace-window.
- `SPC b d` and `SPC b D` now accept an universal prefix argument to
also delete the window. So `SPC u SPC b d` and `SPC u SPC b D` delete
the buffer and the window.
Window
- `SPC w M` now swap the window using ace-window.
- old `SPC w M` (center window) is now on `SPC w c` and `SPC w C` uses
ace-window.
- `SPC w SPC` (select window) is now on `SPC w W` since it uses
ace-window.
- `SPC w d` and `SPC w D` now accepts an universal prefix argument to
delete the window and the buffer.
Correctly augment the docstring based on the presence of b,f and /
bindings using dynamic hint.
b,f and / are not available if none of helm or ivy layers are used.
- Prefer add-to-list function to alter golden-ratio variables so the lists
are less likely to grows as users reload their spacemacs config.
- Move some config to layers when appropriate
- Sort alphabetically the values
- Remove some duplicates in exclude-modes
* layers/+spacemacs/spacemacs-editing/packages.el (spacemacs-editing/init-origami):
add origami package and initialize it
* core/core-dotspacemacs.el (dotspacemacs-override-evil-folding): new
variable to allow choosing between different code folding methods.
Currently supported `evil' and `origami'
To use nlinum + nlinum-relative add the nlinum layer
Note: there are still work to do on nlinum-relative, at some point we
may replace linum by nlinum completely.