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
Helm-flx, which is included as a core package, requires a minimum Emacs
version of 24.4. As it stands attempting to install Spacemacs on Emacs
24.3 or below will break on helm-flx.
Revert "Parse CLI args after dotspacemacs/init"
This reverts commit 0a35502de4.
We cannot delay the parsing of CLI params since we need their values
early during the loading process (i.e. debug info).
Replace the previous commit with a new variable `spacemacs-insecure`
which takes the value of --insecure boolean parameter.
spacemacs/report-issue opens a buffer prepopulated with a template and some
system information. The buffer is markdown-mode augmented with a keybinding to
send the contents to github.
Or if that doesn't work, the text remains in the buffer to be manually copied
and pasted. This makes the error reporting more robust: right after the user has
experienced one bug is the worst time to manifest another one.
This commit also rewrites spacemacs//describe-last-keys-string because I
couldn't figure out how else to prevent view-lossage from burying the new
REPORT_SPACEMACS_ISSUE buffer. Suggestions welcome.
If emacs is launched with -q option and spacemacs files are loaded via
--eval option, then spacemacs fails due to depending `after-init-time'
variable being set properly which is done only when emacs is launched
without -q. This patch is to remove this dependence so that spacemacs
launched with -q can still work. This is done by introducing
`spacemacs-initialized' variable which is set properly regardless of
which command line options are present or absent.
New package :step 'bootstrap', this step happens before 'pre' packages.
A new layer names 'spacemacs-bootstrap' gather all the ':step bootstrap'
packages. This layer is special and is always the first element of
the variable 'configuration-layer--layers' which assure that all
bootstrap packages are configured first.
This new layer leverages the configuration layer system, removes the
clutter of package installations in the function 'spacemacs/init' and
isolate the bootstrap packages in one place.
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.
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