New function configuration-layer/lazy-install to add support for
lazy installation of layers based on auto-mode-alist emacs mechanism.
This is essentially the Prelude feature but translated at the layer
level for Spacemacs.
New dotspacemacs variable to enable this feature:
dotspacemacs-enable-lazy-installation
For now this variable is set to nil by default, it will be put to t when
the feature is stable.
POC with elixir layer.
Start to isolate the list of packages. Also we want to define packages
function at the top level of an elisp file in order to not prevent
emacs from knowing where the functions are defined.
This commit has a POC made with elfeed and elixir layers.
Add function that can be used to defer execution until after
dotspacemacs/user-config is run. If it has already been run the function
executes immediately.
Initially this is only used for deferring the definitions of
transient-states.
spacemacs-STATE-transient-state-remove-bindings is a list of keys whose
associated bindings should be removed for a transient state, when this
variable is defined.
spacemacs-STATE-transient-state-add-bindings is a list of bindings
suitable for a hydra whose associated bindings should be added to a
transient state, when this variable is defined.
Try to use as many of the old keywords from spacemacs|define-micro-state
as possible in the new macr spacemacs|define-micro-state-2 (the 2 is
just to use for the transition period)
Enable a global binding to access a list of available REPLs to run
everywhere. If the requested REPL depends on a major-mode that hasn't
been loaded, it will be loaded along its dependencies.
To make this work, a new `spacemacs/register-repl` function is included.
This function adds a major-mode and its repl function to a global
variable.
Addressing #4586. The bug stops Spacemacs from listing rollback slots if
there exists a file (i.e. non-directory) in the rollback directory.
e.g. .emacs.d/.cache/.rollback/.DS_Store (common in OS X)
- Remove extensions template
- Prompt before creating readme (Users creating private layers probably
don't want to create a readme)
- Template out layer author and email address
- Rename LAYERNAME to LAYER_NAME for readability
- Use fallback attributes if user-full-name is unset
- Fix inconsistent Spacemacs capitalization in template
People transitioning from Vim could be surprised if we set these
variable to t by default, so setting them to nil respects better
the POLA principle.
Impacted variables:
dotspacemacs-ex-substitute-global
dotspacemacs-remap-Y-to-y$
Background: `C-i` and `TAB` are the same keycode for historic reasons.
With the current settings, evil [1] and evil-jumper [2] associate
`jump-forward` to `C-i` (==`TAB`), what overrides bindings set to
`TAB` (==`C-i`) in terminal mode, like `orc-cycle`. To fix this,
this commit:
- Set `evil-want-C-i-jump` to `nil`, to prevent `evil` and `evil-jumper`
to use the `C-i` (==`TAB`) keycode.
- Remove the spacemacs' code that bind `jump-forward` to `TAB`(==`C-i`)
The current spacemacs code already rebind `jump-forward` to the GUI-only
`<C-i>` keycode.
[1] 082bd65ccc/evil-maps.el (evil-maps.el-323)
[2] efaa841ca4/evil-jumper.el (L241)Fix#4505Fix#4487
Please check this, but this does the trick for me to fix#4057. The
reason I'm not sure about it is I don't know what the purpose of the
do-after-display-system-init code is. It doesn't seem necessary for me,
and I'm testing this on the GUI version.
Note that any non Emacsy command line parameter and non processed
command line parameter (that is unknown from Spacemacs) will hide the
home buffer. This should be good enough.
Fixes#4057
Checking for system-type is not enough accurate, it broke when using
an X server under OS X because system-type is darwin but the
initialized display is x-initialized not ns-initialized.
Add macro to wrap things that depend on the display being
initialized (and a frame active), such as getting the font. Advise the
`server-create-window-system-frame` function which is called by
emacsclient when creating a window-system frame. This is only run the
first time a frame is created, so the advice removes itself.
Fixes: syl20bnr/spacemacs#299 and syl20bnr/spacemacs#1894
(Among others)
This make `SPC h SPC` as default binding for accessing `helm-spacemacs`,
by either A) changing all the documentation; and B) adding a deprecation
message for `SPC f e h`.
The deprecation use a warning, because if a message is used it's hidden
directly when the helm buffer is shown, making it nearly unnoticeable
for the user.
More advanced timing of functions and loading with
--debug-init --adv-timers [N]. The last arg is optional and specifies
the threshold time for placing entries in the *load-timers* buffer.
In *spacemacs* buffer, the quick help in `[?]` shows that `m` jumps to
the menu. However, if one customizes the startup lists by setting
`dotspacemacs-startup-lists '(recents bookmarks projects)`, the shortcut
`m` of jumping to the menu would be shadowed and `m` jumps to Bookmarks.
With the help of travisbhartwell and TheBB, I changed the shortcut of
jumping to the Bookmarks to `a` to avoid this shortcut conflict.
1. Don't use beginning-of-buffer (or end):
These are for interactive use only according to compiler
2. reduce => cl-reduce
3. next-line => forward-line
next-line is only for interactive use
4. set-default-font => set-frame-font
set-default-font is obsolete since 23.1
5. show-subtree => outline-show-subtree (alias)
6. show-all => outline-show-all (alias)
evil-set-initial-state is safer than manually adding and deleting from
the lists, because it knows about all available states and ensures that
the mode only shows up in one list. If it is in multiple list the
initial state depends on which is checked first, which we don't want.
This commit merge the `CONTRIBUTING.md` and `doc/CONTRIBUTE.org` file
into a new `CONTRIBUTING.org` file. It also refactors the content to be
more organized and make its navigation more goal-oriented.
Github displays a link to the `CONTRIBUTING.*` file when people are
opening new issues or proposing new PRs. This file is important because
it is the entry-point to contributions guidelines for most of the users.
The current setup is non-optimal, even broken, as it adds a level of
indirection, and points to a contributing file that has broken
links (due to the new documentation format). The possible drawback of
the proposed solution is that I'm not sure if it is possible to include
it into the new online documentation as it is not in `doc/` folder.
The other possibility is to keep a small `CONTRIBUTING.md` file, as it
is now, pointing to the new documentation system (once online), but I'm
preferring the proposed solution for the following reasons:
- People that are willing to contribute will probably open Github
first (for forking, creating PR, etc), not the online documentation.
- It has one level of indirection less when people click on the
guidelines guide from a new issue/PR.
- `CONTRIBUTING.*` is by convention a special kind of file on github, so
it's valid reason to break the rule and not having it in the `doc/`
folder.
Before this <tab> => TAB if there is no binding for <tab>, but then
`spacemacs/translate-C-i` turned this into <C-i>, which we don't want
because that would mean having to always bind <tab> when this option is
enabled. This commit adds a check to make sure we can't possibly be
translating from <tab> originally (we only want to capture the C-i
events in the GUI).
Also, fixes C-m translation but leaves it commented.
Added dotfile variable to template and core-dotspacemacs.el
After enabling, if C-i is translated to the "key" <C-i> which allows you
to bind a separate command in the GUI like this
(define-key map [C-i] 'c-i-command)
or this
(define-key map (kbd "<C-i>") 'c-i-command)
This has the side effect of no longer making C-i default to TAB in the
GUI, but will not affect the TAB or <tab> bindings.
Removes spacemacs//handle-terminal-keys
package-refresh-packages was called every time a bootstrap package or
a theme was installed
Use configuration-layer/retrieve-package-archives to install bootstrap
packages and themes
Add a reentrance boolean to configuration-layer/retrieve-package-archives
Add force and quiet optional arguments to configuration-layer/retrieve-package-archives
Force refresh of archive when the user requests an update of packages
Add request.el to core/libs
Refactor package.el initialization in configuration-layer.el
Cosmetic improvements to loading messages
Remove redefinition of package-refresh-packages
New file core-emacs-ext.el
This is a basic monkey-patch solution but it will do the job for now.
The timeout amount is not configurable for now.
Tested on 24.5 and 24.3.1
fixes#3284
This pre-command-hook translates the special key to the corresponding
emacs function key. This effects only happens in terminal, this hook is
a no-op in GUI.
By doing this we attempt to bring more consistency between the GUI
and the terminal regarding TAB and RET keys.
spacemacs/set-key
spacemacs/set-key-for-state
These functions find normalized keys which should handle as sanely as
possible the GUI and the terminal.
See docstring of spacemacs//normalize-key for more info.
Since there is not an easy way to hook into the title or table of
contents generation, use advising functions to post-process the output
of `org-html-toc' and `org-html-template' to insert the desired content.
Would like a cleaner way of doing this.
dotspacemacs-default-layout-name is only to set the name
new variable dotspacemacs-display-default-layout controls the display
of the default layout in the mode-line
- Introduced new variable `spacemacs-spacemacs-number-of-rollback-slots'
which holds the maximum number of desired rollback slots.
- Introduced functionality to delete oldest rollback slot directories if
total number exceeds the configuration value.
- Rename micro-states to "layouts"
- Rename some functions to include "layout" instead of "perspective"
- cleanup variables
- move functions to funcs.el
- move package specific stuff to post-init functions
- changes key bindings
- micro-state documentation rewrite
- change format of the layouts line in the micro-state doc
- defer loading of persp-mode which loads with `SPC l`
- always display the spacemacs home buffer with no switch
- various fixes
- various new bugs :-)
I feel that it is not needed because it makes not a lot of sense to
have it non global since it is a dotfile variable.
Also remove ' from the docstring for consistency.
If we select a theme after spacemacs' startup, then
`spacemacs--cycle-themes` doesn't have the first theme from
`dotspacemacs-themes` so we start over.
`global-linum-mode` is making line numbers appearing in `*spacemacs*`
and `helm` buffers, what is annoying.
This change make the linum `SPC t n` toggle buffer-local, and add a
customization variable in `.spacemacs` to enable line numbers globally.
«Globally» here as to be understood as «in `prog-mode` and `text-mode`».
This part doesn't seem to be needed any longer. I tested it in terminal
and in GUI modes, both with spacemacs and spacemacs-base distributions,
both with and without a banner: No visual difference with and without
this code.
Mainly adds a check to make sure the working directory is clean before
switching versions. The automatic update should not remove changes by
the user. They can do that manually if they wish.
Also restructures the function to make it a little easier to follow.
Add a spacemacs update button to the spacemacs buffer, and relabel the
package update button to read "Update Packages". This will hopefully
resolve some confusion about updating spacemacs vs. updating the
packages.
I also tweaked the switch-to-version function to make it a little more
verbose to use it for the spacemacs update button.
Catch errors in executed function and signal them to the user in the
spacemacs buffer. We don't want loading to silently fail because there
is a problem in dotspacemacs/user-config for example.
1. Make sure debug-on-error stays on
2. Force verbose loading
3. Detect long requires and loads (with --timed-requires)
4. Start profiler (with --profile)
The dotfile says that setting the major-mode leaders to nil will disable
the functionality, but there were a couple of places where that option
was not being respected.