Commit graph

160 commits

Author SHA1 Message Date
syl20bnr
6212795523 core: allow users to set custom-file variable
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.
2017-03-12 12:10:21 -04:00
syl20bnr
c5fd3dac04 core: fix theme application
Force theme do be disabled when applying them at the end of loading.
Fix computation of theme package directory when theme is a symbol.

Fixes #8319
2017-02-11 17:23:14 -05:00
syl20bnr
415b29b140 core: dotspacemacs-themes entries now accept package properties
It is now possible to use package properties like :location in
dotspacemacs-themes.

Added hooks ran at the beginning and end of configuration-layer/sync:
- configuration-layer-pre-sync-hook
- configuration-layer-post-sync-hook

configuration-layer-pre-sync-hook is used to hook the new function
spacemacs//add-theme-packages-to-additional-packages. This new function updates
dotspacemacs--additional-theme-packages variables.

Update documentation to mention the new feature.
2017-02-01 22:59:03 -05:00
syl20bnr
b3c8ebc816 core: improve theme application
Add all theme packages defined in dotspacemacs-themes to the variable
dotspacemacs-additional-packages and delay the application of user theme at the
end of startup (only when user theme cannot be applied at the very beginning
of Emacs startup).

This has nice properties:
- we leverage the layer system to handle the theme packages installation and
  cleanup.
- theme packages are automatically owned by the dotfile preventing them from
being garbage collected.
- the protected package mechanism is now obsolete since themes were the last
packages using it. This mechanism may be removed in a near future.

Thanks to TheBB for the initial idea.
2017-01-25 23:37:57 -05:00
syl20bnr
9ac779a2e4 core: import spacemacs-theme into libs
Distribute spacemacs-theme with Spacemacs so we don't need to download the
package of the theme at startup. It was delaying the display of the home buffer.

Now Spacemacs fallback to spacemacs-dark theme if the user theme cannot be
applied. Spacemacs then tries to install and reapply the user theme. If
successful, at the subsequent startups the user theme is applied right away
instead of spacemacs-dark. If the installation failed then we display a warning
informing the user and suggesting some actions.

There is now no package left to be installed manually at the start of Spacemacs.
2017-01-25 00:30:31 -05:00
syl20bnr
66d359f364 core: fix startup graphical glitch
Since Emacs 25.1 I got screen flickering when packages are installed on
startup.
Shuffling the UI elements removal seems to fix it on my system using X.

It may have the opposite effect on other users setup.
2017-01-25 00:24:02 -05:00
syl20bnr
973f6fe5ae core: import ido-vertical-mode into core/libs
It provides more intuitive way to display the wizard.
2017-01-23 23:52:57 -05:00
syl20bnr
333f762b36 core: name startup-hook function and move spacemacs-buffer//startup-hook 2017-01-22 00:31:30 -05:00
syl20bnr
fb27ede558 Bump year in copyright headers
Happy New Year 2017!
2017-01-05 23:08:17 -05:00
syl20bnr
74fdbb6795 Refactor and simplify company backends declaration
Enabling a company backend for a specific mode was a tedious tasks with code
scattered at different locations, one for local variable definitions, one for
company hook function definitions and another where the backends were pushed to
the local variables (which was problematic, since we ended up pushing the same
backends over and over again with `SPC f e R`, pushes have been replaced by
add-to-list calls in the new macro).

All these steps are now put together at one place with the new macro
spacemacs|add-company-backends, check its docstring for more info on its
arguments.

This macro also allows to define arbitrary buffer local variables to tune
company for specific modes (similar to layer variables via a keyword :variables)

The code related to company backends management has been moved to the
auto-completion layer in the funcs.el file. A nice side effect of this move is
that it enforces correct encapsulation of company backends related code. We can
now easily detect if there is some configuration leakage when the
auto-completion layer is not used. But we loose macro expansion at file loading
time (not sue it is a big concern though).

The function spacemacs|enable-auto-complete was never used so it has been
deleted which led to the deletion of the now empty file core-auto-completion.el.

The example in LAYERS.org regarding auto-completion is now out of date and has
been deleted. An example to setup auto-completion is provided in the README.org
file of the auto-completion layer.
2017-01-02 00:39:04 -05:00
syl20bnr
467a5cc0ff core: move some functions to their correct source file 2016-12-18 12:05:10 -05:00
syl20bnr
28f2a6079d core: add explanation about double loading of customs in code
The explanation was in the previous commit message but it should be made more
obvious, so I move it directly into the source code.
2016-12-18 11:50:50 -05:00
syl20bnr
0ab8b7ba35 core: fix deletion of some custom settings when installing new packages
Given the loading process of Spacemacs we have no choice but to set the
custom settings twice:
- once at the very beginning of startup
- once at the very end of loading

The first application of custom settings is to be sure that Emacs knows all the
defined settings before saving them to a file (otherwise we loose all the
settings that Emacs does not know of).
The second application is to override any settings set in dotfile functions
like `dotspacemacs/user-config`, users expect the custom settings to be the
effective ones.

This double loading issue is independent from the managment method used for
custom settings. Even with a separate custom-settings file explicitly loaded in
the dotfile we would have been forced to load this file twice to acheive the
expected result described here.

Note: Loading custom-settings twice is not ideal since they can have side
effects! Maybe an inhibit variable in Emacs can supress these side effects?
2016-12-18 11:46:23 -05:00
d12frosted
5dbfaf3a8d
encode ; in issue report body 2016-12-14 18:23:44 +02:00
syl20bnr
6ae2fbcfa9 core: use an advice to write custom settings to dotfile
Should fix #7816
2016-11-23 16:32:10 -05:00
syl20bnr
e699f1816a core: wrap Emacs custom in a dotfile new function
New function `dotspacmacs/emacs-custom-settings` wrapping Emacs
custom settings sexps.
`dotspacemacs/emacs-custom-settings` is called just after the user
configuration (`dotspacemacs/user-config`)

Customize cannot write its auto-generated sexps inside a function, to
accomplish this we trick Emacs by setting the custom file to a file
in `.cache` directory, the path to this file is defined by the variable
`spacemacs--custom-file`. At the startup of Emacs we read this file
to insert its content inside the function
`dotspacemacs/emacs-custom-settings` in the dotfile, this is done in the
function `spacemacs/write-custom-settings-to-dotfile`.

I don't think we need to write the custom settings to the dotfile when
exiting Emacs as well, since we do it at startup at the very beginning
(i.e. before actually loading the dotfile) we should be OK.

Fixes #5170
2016-11-22 22:55:36 -05:00
Eivind Fonn
5c912e942f Don’t toggle maximized if already maximized 2016-11-20 18:59:57 -05:00
syl20bnr
2c4cd4dd42 core: Revert dotfile installation time and fix editing style bug
Force a call to dotspacemacs/init after dotfile installtion.
Move call to (spacemacs/maybe-install-dotfile) to spacemacs/init.
2016-11-07 10:40:39 -05:00
Eivind Fonn
24c3859d1e Install dotfile earlier 2016-11-07 10:07:28 -05:00
deb0ch
3b92a4c2bf maximize frame earlier in the startup process 2016-10-23 19:44:35 +02:00
Eivind Fonn
1a97aeb215 Warn if layers changed outside dotspacemacs/layers 2016-10-18 10:13:17 +02:00
JAremko
37d74f60a8
Report system-configuration-features 2016-10-11 22:16:21 +03:00
Eivind Fonn
26df4a7799 Fix initial-buffer-choice in daemon mode 2016-09-15 12:07:51 +02:00
Eivind Fonn
928983da47 Refactor jump to definition
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
2016-08-22 15:08:25 +02:00
syl20bnr
a9489a431d core: fix naming conventions for private funcs and vars
in core-release-management.el
2016-08-03 21:43:12 -04:00
syl20bnr
92ca7fd0f3 core: fix startup check being always executed 2016-08-03 21:43:12 -04:00
km
d7820aafd6 Remove even more 24.3 related configuration
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.
2016-06-20 22:26:53 -04:00
syl20bnr
8368be3c89 core: display a numerical progression in mode-line
Represents the number of packages to configure.
2016-06-13 00:56:25 -04:00
syl20bnr
419eb51836 core: new variable spacemacs-insecure
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.
2016-06-09 23:09:59 -04:00
Eivind Fonn
0a35502de4 Parse CLI args after dotspacemacs/init 2016-06-09 23:03:03 -04:00
syl20bnr
f3e50195d7 core: add footer in home buffer 2016-06-05 00:19:18 -04:00
Eivind Fonn
654c704f6c core: fix missing font error message 2016-06-04 21:40:50 +02:00
Eivind Fonn
5a444184f1 core: allow list of fonts 2016-06-03 23:41:22 -04:00
Diego Berrocal
0749c61add Add emojis to the Issue Template 2016-05-27 00:32:05 -04:00
syl20bnr
1f993bddf6 Rename spacemacs-helm and spacemacs-ivy layers to helm and ivy
For ivy users: be sure to update your dotfile by replacing spacemacs-ivy
by ivy
2016-05-15 22:24:27 -04:00
Eivind Fonn
22774e6a96 Make font warning more explicit. 2016-05-05 15:10:30 +02:00
syl20bnr
419a0331ab Add font-locking for report-issue-mode buffers 2016-04-29 19:55:46 -04:00
Damon Wang
6e6732c9b5 Adds in-emacs editing to spacemacs/report-issue
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.
2016-04-29 19:32:36 -04:00
Fabien Dubosson
ce803c6bab Let's try to get this message unnoticed
syl20bnr reported this message can be read on startup because there is a
small delay after it, so let's try to change it to something less weird.
2016-04-28 15:47:53 +02:00
Fabien Dubosson
04267777ca Fix font definition for first frame in daemon mode 2016-04-21 21:10:28 -04:00
syl20bnr
92e144a361 Remove april fool 2016 starting code 2016-04-20 23:46:16 -04:00
Muneeb Shaikh
32f9b809ed core: update report-issue docs and docstring
* core/core-spacemacs.el (spacemacs/report-issue): update docstring
* doc/DOCUMENTATION.org (Reporting Issue table): reword key description
  to keep table width small

Fix #5155
2016-04-17 00:37:47 -04:00
Richard Kim
4ce4d6de77 allow emacs to be launched with -q option
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.
2016-04-08 18:04:11 -04:00
syl20bnr
22c2763569 core: add package breakdown in summary message
e: elpa
r: recipe
l: local
b: built-in
2016-04-03 12:02:28 -04:00
syl20bnr
d60228219f core: ensure quelpa is available when installing packages 2016-04-03 02:51:01 -04:00
syl20bnr
8e897f6b7b core: new layer spacemacs-bootstrap and new package :step
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.
2016-04-03 00:28:47 -04:00
syl20bnr
5efa0e58c0 April Fool 2016 2016-04-01 00:26:19 -04:00
syl20bnr
05a04768b1 core: new function spacemacs/window-system-is-mac
Use if to disable the menu-bar
2016-03-31 00:34:28 -04:00
syl20bnr
8f3494d83c core: move system functions to core-funcs.el 2016-03-31 00:33:56 -04:00
d12frosted
80874646fc properly check for system-is-mac 2016-03-31 00:23:59 -04:00