Commit Graph

183 Commits

Author SHA1 Message Date
duianto ae51fd7a77 Revert "Improve theme handling to support themes using `spacemacs-theme` custom api"
This reverts commit 5f308b0306.

This message is shown on startup:
spacemacs/startup-hook: Symbol’s value as variable is void: spacemacs-theme-custom-colors
and it broke several things.
2019-08-17 11:07:48 +02:00
smile13241324 5f308b0306 Improve theme handling to support themes using `spacemacs-theme` custom api 2019-08-16 23:05:42 +02:00
smile13241324 85fca8f323 Restore winner-mode auto start without breaking dumping
As winner-mode was moved from init.el to dump-init.el winner-mode
was not longer properly started for non-dumped emacs sessions.
Having winner-mode auto activate at startup did fix the issue
for non-dumping users but in turn broke the dumping process.

I have now moved the necessary winner-mode init to
spacemacs/setup-startup-hook which is only called
in the non-dumping case. To allow customizations I activate
winner-mode prior to loading user-init this will allow users
to deactivate winner-mode in the dotfile and fix ediff themselves
if this is wished for.
2019-08-04 14:49:10 +02:00
bb2020 af1ddfd7bd Add `dotspacemacs-undecorated-at-startup` template variable 2019-06-01 00:01:20 +02:00
bmag 5eff620e83 custom setting: don't write to dotfile before loading all of them
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.
2019-02-18 14:21:06 -05:00
John Eismeier 5e3c96562a Propose a couple of spelling corrections 2018-08-02 00:20:06 +03:00
syl20bnr a013d86874 core: update environment variables management
* 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
2018-07-03 01:25:28 -04:00
syl20bnr 6220ace290 core: rework environment variables and PATH management
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.
2018-06-25 02:55:28 -04:00
syl20bnr bd316f4c30 core: add new macro spacemacs|add-transient-hook
Transient hooks vanishes when they are evaluated.
2018-06-11 01:30:18 -04:00
syl20bnr ac247396f3 core: avoid unecessary output in message buffer at startup
Unless in debug mode.
2018-06-10 02:49:51 -04:00
syl20bnr a0a3ff0c20 core: refactor the progress bar
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
2018-06-10 02:32:29 -04:00
syl20bnr 14b71afb42 dump: auto-dump emacs on load if layer list has changed
* 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.
2018-05-20 03:58:48 -04:00
syl20bnr 2580e43c66 Add support for dumping Spacemacs
Create dump with:

   ./emacs --batch -l ~/.emacs.d/dump-init.el \
           -eval '(dump-emacs-portable "spacemacs.pdmp")'

Load dump with:

   ./emacs --dump-file=spacemacs.pdmp

User can require/load additional libraries in new dotfile function:

   dotspacemacs/user-load
2018-05-20 03:57:54 -04:00
syl20bnr 72c89df995 core: add dotspacemacs-gc-cons variable 2018-01-28 23:22:38 -05:00
syl20bnr 6f7b57650b core: backport battery fix for macOS 2018-01-12 22:37:04 -05:00
syl20bnr 326965d4ce Happy New Year 2018! 2018-01-04 02:00:25 -05:00
syl20bnr cc73871cb4 core: Fix issue with custom settings and lazy loading
Fixes #9736
2017-10-29 10:39:48 -04:00
syl20bnr 65d5e42b8e core: add support for stable ELPA repository hosted on GitHub
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/")))
2017-10-29 01:20:25 -04:00
ZarsBranchkin 4353535a98 Fix disabled scrollbar remains 2017-06-21 09:37:05 +02:00
Eivind Fonn ef12c6073a theming: robustness
Disable all applied themes in all cases, when a theme is applied
2017-06-18 12:38:01 +02:00
syl20bnr 8db21403d7 Fix support for fancy frame title 2017-04-28 23:39:41 -04:00
Kepi 7e266f4f3c Improve support for fancy frame title 2017-04-28 23:16:22 -04:00
Uri Sharf cb30ec1df8 Add support for fancy frame title
Acked-by: Uri Sharf <uri.sharf@gmail.com>
2017-04-28 23:13:25 -04:00
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