0ffdb353f9 changed the default config template to use a point size instead of a pixel size. Change the defvar declaration as well.
Commit modified by duianto:
Updated font size in doc/documentation.org
13 and 10.0 are visually the same, because:
- Integer specifies the pixel size.
- Floating-point specifies the point size.
Using a default floating-point size has two benefits:
- It's clear that the font size can be changed by floating-point values.
- There won't be an unpleasant surprise that `13` and `13.0` are different
sizes. For example to make the font slightly larger or smaller than `13`.
Then `10.0` has to be found first by trial and error.
* core/core-funcs.el (spacemacs/alternate-buffer): Instead of using
switch-to-buffer, use set-window-buffer-start-and-point, specifying the
previous window start position and point if known. Replace use of
cl-find-if with cl-find.
* CHANGELOG.develop: Add entry for change to spacemacs/alternate-buffer.
Remove mention of powerline-scale property from the
.spacemacs.template font variable comment.
Update the changelog.develop entry for the mode line
separator scale when the utf-8 separator is used.
Emacs 26 added built-in support for line numbers, relative line numbers, and
visual line numbers. Spacemacs supports only absolute and relative, but there is
no way to access the visual mode. It's hard to get around this, since Spacemacs
abstracts line numbers to a reasonably high degree.
Arguably, `visual` is much more useful than `relative` as a display type. Visual
line numbers are like relative line numbers, but only lines that are actually
showing are counted. This means:
1. Hidden lines are not counted. If a large amount of text is folded, the line
numbers won't jump from "10" to "546". This is particularly useful in
buffers like `magit-status`, where a large amount of information is folded
by default.
2. Lines that are wrapped are counted as multiple lines, since they're being
displayed as multiple lines in the editor. Each visual line will be
numbered - unlike `relative`, where the entire thing is numbered... Once.
With standard relative line numbers, you can't actually navigate using the line
numbers in the sidebar as soon as folded or wrapped lines are introduced. Since
this is one of the main use cases for relative line numbers, this is a big
problem.
Visual mode fixes that problem. Every line that's being displayed is labelled.
Numbers always correspond to the actual number of lines you'd need to navigate
to reach that line.
This commit extends Spacemacs' line number interface to provide visual line
number support.
New var: dotspacemacs-new-empty-buffer-major-mode
Set to a symbol naming a mode (e.g. 'text-mode) to apply that major mode to any
buffers newly created in Spacemacs by spacemacs/new-empty-buffer.
Fixes#12382.
The call to `format-spec` at the end of `spacemacs/title-prepare` creates
a temporary buffer which invokes `buffer-list-update-hook`. This in turn is
caught by treemacs' follow-mode and can lead to an action that requires a
recalculation of the frame-title, which again creates a new temp-buffer, and
so on.
The result is that in some situations Emacs will put full load on a CPU
core while it is idle (though the UI does remain responsive). The disabling
of the hook for the calculation of the frame title prevents this feedback
loop from forming.
See also https://debbugs.gnu.org/db/34/34765.htmlFixes#12387
Commit 1c4f685b13 replaced
configuration-layer--layers (a list of cfgl-layer objects) with
configuration-layer--used-layers (a list of symbols). It also changed the
configuration-layer/insert-lazy-install-configuration function to use the
new variable, but it did not change the sort predicate. Consequently, the
function started failing:
Wrong type argument: listp, spacemacs-purpose
In addition, because sort is destructive, the function also deleted values
from configuration-layer--used-layers.
This commit fixes the sort predicate so that the function returns the
correct value, and it copies the list before sorting to avoid modifying
configuration-layer--used-layers.
* core/core-configuration-layer.el
(configuration-layer/insert-lazy-install-configuration): Use string<
as the sort predicate, and give sort a copy of the list.
The line in the Spacemacs home buffer that shows the Spacemacs version, Emacs
version and the Spacemacs distribution, for example: "0.300.0@26.1 (spacemacs)"
were tied to the banner. The line disappeared when the banner was hidden.
Fixes a bug where saving a custom variable (e.g. package-selected-packages)
before reading the custom settings from dotspacemacs/emacs-custom-settings could
overwrite the stored settings.
spacemacs/title-prepare is being called on every frame re-display, so
eager evaluation of values for every possible format specifier can be too
expensive. For example projectile-project-name is very slow in TRAMP buffers.
`SPC f e f` key binding is no more present, so moved that table entry to
`SPC h f` in DOCUMENTATION.org.
corrected description of paste transient-state behavior.
Lexical binding is easier to reason about and it's generally recommended for new code. It's faster too.
Dynamic scoping can lead to tricky situations. Example: https://emacs.stackexchange.com/questions/10394/scope-in-lambda
This probably won't break existing code. Most people don't even know the default is dynamic binding.
Since bash will source different files depending on its mode, for instance
login vs. non-login shells, we fetch the env vars from both a login shell and
an interactive non-login shell. We try to cleanup the resulting file by removing
duplicates, sorting env vars etc...
* add new dotfile function `dotspacemacs/user-env`
* add ignored env. vars with variable spacemacs-ignored-environment-variables
* ignore env vars: SSH_AUTH_SOCK and DBUS_SESSION_BUS_ADDRESS
* update documentation in DOCUMENTATION.org
* update .spacemacs.template with new function
* rename environment file from spacemacs.env to .spacemacs.env
* move location of .spacemacs.env file to home or dotdirectory
* add a header to the generated .spacemacs.env file to explain what it is
* make SPC f e e fallbacks to the function dotspacemacs/user-env if the user
manages the env var by themselves
* make SPC f e E call the new function dotspacemacs/user-env
* sort environment variables in .spacemacs.env file
See updated DOCUMENTATION.org and FAQ.org for more info.
* add core-env.el
* add library load-env-vars.el
* add bootstrap package dotenv-mode.el
* remove spacemacs-environment from bootstrap layer
* remove dotspacemacs variable dotspacemacs-import-env-vars-from-shell
* remove dotspacemacs variable dotspacemacs-improt-env-vars-shell-file-name
* add new key binding SPC f e e to open spacemacs.env file
* add new key binding SPC f e E to reload environment variable from env file
* add new key binding SPC f e C-e to re-initialize the env file from shell.
* new variable dotspacemacs-import-env-vars-from-shell
* asynchronous import of environments variables
* move loadenv function to funcs.el
* update documentation
Spacemacs is slow to startup so better give it a not buggy progress bar :-)
* Move progress bar code to core-progress-bar.el file
* Remove the counters at the end of the progress bar
* Fix update of the progress bar value
* Fix progress bar size when staring Emacs maximized
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).
It allows to put package variable with a default value set by spacemacs in
the layer variables. For instance to set treemacs position to the right, you can
now do it like this:
(treemacs :variables treemacs-position 'right)
* 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"
* new dotvariable dotspacemacs-emacs-pdumper-executable-file
* new dotvariable dotspacemacs-emacs-dumper-dump-file
* dump emacs if dotspacemacs-emacs-pdumper-executable-file is non nil
* rename core-dump.el to core-dumper.el
* add function spacemacs/dump-emacs
* explicitly load core-dumper.el file in init.el
* asynchronously dump emacs if layer list has changed, see special buffer
*spacemacs-dumper* for the output.
This allows to navigate between params using the '{' and '}' paragraph movements
and makes it clearer wether description is for the variable below or above.
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.
With this commit, the new loading order for package configuration is:
- pre-init functions for all packages
- init function of all packages
- post-init functions for all packages
Escape left and right bracket character literals to avoid the following
warning:
Loading ‘core-dotspacemacs’: unescaped character literals `?[', `?]' detected!
Delete the quote preceding the lambda in spacemacs|add-toggle to avoid
the following warning:
.emacs.d/core/core-toggle.el: (lambda (x) ...) quoted with ' rather than with #'
While #' would be more correct than ', there is no need to quote the
lambda at all.
Modify macro spacemacs|add-toggle to create additional sets of functions for
each supported modes when the toggle is major mode specific.
A toggle is major mode specific when it is bound to keys using the keyword
:evil-leader-for-mode
Updare documentation to add a section on toggles in the Spacemacs concepts.
- Change nameless prefix to > instead of default :
- Change toggle to SPC m >
- Set nameless separator to nil in order to make it work with any type or separator
- Add diminish unicode ⧁
- Define some default global aliases for Spacemacs source code
- Rename layer variable emacs-lisp-nameless-mode to emacs-lisp-hide-namespace-prefix
- Make variable nameless-current-name safe as a local variable for string values
- Set nameless prefix for core-configuration-layer.el
If non-nil then Spacelpa repository is the primary source to install
a locked version of packages. If nil then Spacemacs will install the lastest
version of packages from MELPA. (default nil)
The default value will be true when we bust all the major bugs.
New variable configuration-layer-elpa-subdirectory set in .lock file.
Now users creating a branch based on develop or master won't reinstall
all the packages in a new elpa directory.
Use const input for function configuration-layer/elpa-directory
New const variables used as input:
- configuration-layer--elpa-root-directory
- configuration-layer--rollback-root-directory
Fix computation of elpa directory by using expand-file-name.
Fixes#9805
New dotfile variable dotspacemacs-verify-spacelpa-archives
Default value is nil for now, users wanting to help testing this feature can
set it to t and delete the directory ~/.emacs.d/.cache/stable-elpa and restart
Emacs to download the Spacelpa archive and verify it.
Update function configuration-layer/stable-elpa-download-tarball to download
signature files as well.
Update function configuration-layer//stable-elpa-untar-archive to verify the
downloaded archive using epg library.
Example of signature files can be found here:
https://github.com/syl20bnr/spacelpa/releases/tag/v0.300
New function spacemacs-buffer/error that gather all the errors and then display
them in the startup buffer under a new list entry `Errors:`.
Add shortcut `e` to go to errors list entry.
New private function configuration-layer//error to wrap spacemacs-buffer/error
and increment the startup error count that is displayed in a red mode-line when
startup process finishes.
Use the official spacelpa ELPA repository.
address: https://github.com/syl20bnr/spacelpa
ELPA repository configuration is now in a file called .lock at the root of the
git repository. Its goal is to setup the ELPA repositories for a given branch
and it should not be modified! The philosophy of Spacemacs is to never fork the
git repository and this lock file has been put in the repo on purpose.
Only the master branch will have a .lock file that points to spacelpa, the
develop branch won't use the stable ELPA repository and will continue to behave
like it always did.
BUT for testing purpose and until the first major version of Spacemacs that uses
the stable ELPA repo is released I push a .lock file to develop branch that
points to spacelpa.
I understand that some people can be annoyed by this so the variable
configuration-layer--elpa-archives can be overriden by putting a setq in your
dotfile in the user-init function like this:
(setq configuration-layer--elpa-archives
'(("melpa" . "melpa.org/packages/")
("org" . "orgmode.org/elpa/")
("gnu" . "elpa.gnu.org/packages/")))
Set it to emacs-version as it is the saner defaults here. When updating the
version of emacs, packages should be byte-recompiled. Thus this is safer to
isolate each package by emacs-version.
Change meaningful values of BACKWARD argument to just nil and non-nil.
Get rid of spacemacs--cycle-themes, it was unnecessary.
Create a defvar for spacemacs--cur-theme.
Original Commit List
- update cycle-spacemacs-theme function to work backward with universal arg
- add a transient-state hydra to cycle through the modes
- move the transient-state definition in the +distribution spacemacs-base
- refactor using hydra syntax for expression as command
- modified cycle-theme to handle negative command argument
- add keybing for helm-themes in the transient-state
Adds support for setting the following gruvbox theme variants
as dotspacemacs-theme:
- gruvbox-dark-soft
- gruvbox-dark-medium
- gruvbox-dark-hard
- gruvbox-light-soft
- gruvbox-light-medium
- gruvbox-light-hard
The default value is now at the distribution level. The user must put the ivy
layer explicitly in the dotfile.
This to be consistent with filetree package which is neotree by default in
the standard spacemacs distribution.
I'm afraid that we add too much wizard questions as the helm/ivy case will
happen more and more in the future. Neotree and Treemacs are the first layers
to follow the Helm and Ivy pattern. I don't want to add a fourth question to
the wizard which makes it heavy and is not as useful for new users.
Shadowing is now control by layer property ':can-shadow' only.
can-shadow is a commutative relation, if layer1 can shadow layer2 then layer2
can shadow layer1.
the shadow operator is a binary operator accepting two layer names, it is not
commutative and the order of the operands is determined by the order of the
layers in the dotfile (like the ownership stealing mechanism).
If ':can-shadow' is set explicity to nil in the dotfile then the layer won't
shadow any layer.
For instance to install both ivy and helm layer:
(setq dotspacemacs-configuration-layers
'(
ivy
(helm :can-shadow nil)
)
note that due to the commutative relation the above example can also be
written (in this case, ':can-shadow' should be read ':can-be-shawdowed'):
(setq dotspacemacs-configuration-layers
'(
(ivy :can-shadow nil)
helm
)
Layers can now declare in their layers.el file that they shadow one or more
layers using the following functions:
- configuration-layer/shadow-layers
- configuration-layer/shadow-layer
Those function are commutative so:
(configuration-layer/shadow-layer 'layer1 'layer2)
is the same as
(configuration-layer/shadow-layer 'layer2 'layer1)
and means that
layer1 shadows layer2
and
layer2 shadows layer1
The typical use-case is helm and ivy layers. Helm shadows the ivy layer and
Ivy shadows the helm layer.
Shadowing is sensitive to the order of declaration of layers in the dotfile,
for instance:
(setq dotspacemacs-configuration-layers '(
helm
ivy
))
means that ivy shadows helm so helm layer is effectively ignored,
whereas
(setq dotspacemacs-configuration-layers '(
ivy
helm
))
means that helm shadows ivy so ivy layer is effectively ignored.
This mechanism can be turned off using the :can-shadow keyword:
(setq dotspacemacs-configuration-layers '(
ivy
(helm :can-shadow nil)
))
means that both ivy and helm layers will be installed (not recommended in this
case)
Note that the `:can-shadow` mechanism will be fully implemented in a next
commit.
- remove variable configuration-layer--used-distant-packages
- rename function configuration-layer//get-distant-packages to
configuration-layer//filter-distant-packages to better reflect what it does
- Add argument PREDICATE to configuration-layer//filter-distant-packages
- New cfgl-package methods: cfgl-package-used-p and cfgl-package-distant-p
- Add unit tests
Add `(default X)` comment to almost all dotspacemacs variables in
dotspacemacs/init function in the template. Exempted are variables with long
default values. (e.g. dotspacemacs-themes)
Remove `(default X)` from doctsring of dotspacemacs variables. It isn't
necessary, the built-in help system already displays the default value
automatically.
Fix some minor grammar and spelling mistakes.
"micro-state" was the previous name for "transient-state".
Reword the sentence and quote the kill-ring variable.
Duplicate the docstring to the dotspacemacs-enable-paste-transient-state
variables docstring in core-dotspacemacs.el.
Replace the optional argument `no-install` by a global variable named
`spacemacs-sync-packages`.
Rename the hooks to reflect the renaming of the function.
Rename the flag `--no-sync` to the more explicit `--no-package-sync`
This adds a new startup flag `--skip-sync`. It will force spacemacs to skip
package synchonization. This can be useful in cases when you're working under
poor or restrictive network.
Thanks, @zaript, for this idea!
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:
Two which-key functions doc-strings, state that they are obsolete:
(which-key-declare-prefixes KEY-SEQUENCE REPLACEMENT &rest MORE)
This function is obsolete since 2016-10-05;
use ‘which-key-add-key-based-replacements’ instead.
(which-key-declare-prefixes-for-mode MODE KEY-SEQUENCE REPLACEMENT &rest MORE)
This function is obsolete since 2016-10-05;
use ‘which-key-add-major-mode-key-based-replacements’ instead.
Solution:
Replace the obsolete functions.
Searching with `SPC /` through the .emacs.d folder, didn't find any other
occurrences of these functions.
A recent change in the `.spacemacs.template` made it so that the
`dotspacemacs-configuration-layers` variable name can be found inside a
comment right before the expression that sets it's value. This makes the
lazy insertion fail to detect the proper place to add lazy loaded
layers.
This fix solves the immediate problem but maybe a better solution can
be found.
This is an attempt to tighten up the language of the docstrings for
initialization and configuration functions. I realize that's pretty
subjective, so please only use what makes sense. Below is a break-
down to avoid seeming _too_ arbitrary.
Rationale
---------
Headings: We know they're functions, so we don't need to say
'X function'. 'Layer configuration' is called that in the other
functions.
Instructions: Say what I should do.
Other: `dotspacemacs/init' -- 'very beginning' is the more common
English idiom.
If I sound strident, it's just 'cause I'm trying to be terse.
This is all opinion so YMMV. I hope it helps.
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.
This allows the user to, for instance, include the spacemacs tree as a
git submodule of their configuration repository without seeing
superfluous warnings.
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.
At the moment a Quelpa recipe like `(recipe :fetcher local)` is being translated
to something like
`(recipe :fetcher file :path "my-layer/local/my-pkg/my-pkg.el")`. So we can
build simple single-file local packages.
This commit changes it to translate to the package directory instead of exact lisp
file, so we can build multi-file local packages. Thus, the above example will be
translated to `(recipe :fetcher file :path "my-layer/local/my-pkg")`.
Also, add the relevant info to LAYERS.org.
Some of the layers do not supply a README.org file which caused
invalid links in the layer list. To avoid this I have changed
spacemacs//generate-layers-from-path to only add links to layers
with a valid README.org file.
I have also removed an invalid check to exclude the non existing directory
"distribution" from the layers list. I think that originally the folder
"distributions" should have been excluded but this is not longer
a feasible action as there is at least one layer with a valid README.org
file in there today. So now we add links to all layers providing a
README.org file independent of their category.
In 2015 a file CONTRIBUTE.org was existing in the /doc folder.
In addition a CONTRIBUTING.md file was existing in the project root folder.
This was merged into a CONTRIBUTING.org file, which is still located in the project root.
However the documentation publishing system was still looking only in the doc folder.
In addition the external documentation is still referring to the old CONTRIBUTE.html which is not longer existing.
I have now included a new function called prior to publishing
which is copying the documents from the projects root into the doc folder.
As a side effect it renames the CONTRIBUTING.org to the old CONTRIBUTE.org
to support the external documentation.
Specifying parent modes (e.g. prog-mode) in :enabled-for-modes and
:disabled-for-modes keys in dotspacemacs-line-numbers catches derived
modes (e.g. c-mode) as well.
Fix bug where an empty :disabled-for-modes and a non-empty :enabled-for-modes
enabled line numbers everywhere, instead of only in modes specified in
:enabled-for-modes. (see https://github.com/syl20bnr/spacemacs/issues/8482)
Add auxiliary function spacemacs/derived-mode-p, similar to derived-mode-p but
takes a major-mode as an argument instead of using the current major-mode.
In this case Spacemacs won't write custom variables to the
dotspacemacs/emacs-custom-settings variable.
Move setq and add-advice to spacemacs/initialize-custom-file which is now
called in spacemacs/init function just after dotspacemacs/user-init function.