Commit graph

140 commits

Author SHA1 Message Date
deb0ch a23761c383 minor elisp convention fix 2017-01-31 17:54:19 +01:00
syl20bnr 05c8ac8ba7 core: don't reset mode-line when displaying text in spacemacs home buffer 2017-01-25 23:37:57 -05:00
syl20bnr dcfa00488e Minor comment change 2017-01-25 00:28:15 -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
deb0ch f8cb17eaf4
home-buffer: fix error on footer insertion when window is narrow 2016-12-22 16:31:13 +02:00
deb0ch e952eef1a6 home buffer: center buffer on fixed width 80 when not responsive 2016-11-07 09:15:56 -05:00
deb0ch bb5fdd8eaa home buffer: framed notes: allow for numbered and dotted lists
enumeration lists of the form:

 - lorem ipsum
 * lorem ipsum
 + lorem ipsum
 1. lorem ipsum
 2) lorem ipsum

will be treated as separate paragraphes and not be squished by
fill-region anymore.
2016-11-07 09:14:18 -05:00
deb0ch 67c5b2cb01 home-buffer: adapt home buffer notes toggling to responsiveness 2016-11-07 09:14:13 -05:00
deb0ch 3fa8b40057 home buffer: better framed notes display <3
More flexible framed text generation:

- adjust frame width to content width
- define minimum and maximum width
- allow for inserting a caption at the bottom of the frame

Unless dotspacemacs-startup-buffer-respinsive is nil:

- framed notes are centered
- max width is adapted to the window width

Also add a note inviting the user to update his packages and dotfile on
every new release (fixes #7357).
2016-11-07 09:13:46 -05:00
syl20bnr 48c3ecd1f8 core: register warning message only when messages are not inhibited 2016-10-20 09:32:03 -04:00
Eivind Fonn ae66a4cea1 Show warnings in home buffer 2016-10-18 10:13:17 +02:00
syl20bnr 574b2ffe5d core: allow links surrounded with [[]] in release notes 2016-10-10 00:50:29 -04:00
syl20bnr 703f78c2b8 Cleanup pass on file spacemacs-base/funcs.el
- Apply `/` and `//` rules (double / is for private functions)
- Add missing `spacemacs/` prefixes
- Move functions used outside of spacemacs-base layer to
  core/core-funcs.el
- Remove unused functions

Commit originally intented to only rename linum-update-window-scale-fix
to spacemacs/linum-update-window-scale-fix :-)
2016-10-09 13:14:41 -04:00
syl20bnr 7ff631a1d9 Change j/k to J/K to navigate home buffer
Update the quick help and sort the key bindings a bit.
2016-10-09 13:14:41 -04:00
Tobias Gläßer 65b076e4d9 Use j/k in spacemacs buffer for widget motions
Currently j/k were only navigating between lines, but hitting RET
wouldn't work on a recent file and the like, when the cursor wasn't
directly over the filename. Changing j/k to widget navigation, ensures
that the cursor is always on something clickable. This change should
make the home buffer feel more at home for evil mode users.
2016-10-08 19:42:27 +02:00
syl20bnr e6357a5ea3 Add missing 0.200 release notes for home buffer 2016-10-03 02:16:42 -04:00
deb0ch 7860804fff adjust or center startup lists in home buffer 2016-09-22 10:19:39 +02:00
Eivind Fonn e02c012ba1 Additional home buffer fixes 2016-09-14 20:53:30 +02:00
Steven Allen 7e903da247 Never use negative widths when formatting the spacemacs buffer caption.
Fixes: #7114
2016-09-14 19:44:01 +02:00
deb0ch fd9ac4afce refactor spacemacs-buffer/goto-buffer: fix logic flaw, center in terminal
fix buffer not re-created when buffer does not exist and last-width did
not change.

allow for home buffer centering in terminals.
2016-09-14 11:41:40 +02:00
Aaron Jensen bc5eb62e53 core: Add resize hook later in startup
Fixes hang while resizing on startup with initial-frame-alist.

Fixes #6986
2016-09-03 12:07:07 +02:00
Eivind Fonn e207038208 Add dsm variable for responsive home buffer 2016-09-03 12:07:03 +02:00
Eivind Fonn 2ef8c00e6b Add global bound on startup list lengths 2016-09-03 12:06:57 +02:00
Eivind Fonn a90414cc1b Add additional linebreak in home buffer 2016-08-31 18:48:27 +02:00
deb0ch 7dfa038107 redisplay startup info summary when re-centering and refreshing spacemacs buffer 2016-08-31 18:42:19 +02:00
Eivind Fonn df255da69a Fix: only choose random banner once 2016-08-31 18:33:48 +02:00
ralesi a7d4674202 Auto center spacemacs-buffer on window resize. 2016-08-31 18:29:12 +02:00
syl20bnr 1c4f685b13 core: refactor layer system
TL;DR Should get 20~25% speed improvement on startup, should get a big
improvement when using ivy or helm SPC h SPC. Users with layers.el files
in their layers must use `configuration-layer/declare-used-layer`
instead of `configuration-layer/declare-layer`

The implementation of the layer system made heavy use of `object-assoc`
and `object-assoc-list` functions which are not efficient. This PR
mainly replaces those object lists with hash maps in order to index the
objects by their name and achieve an O(1) access time.

The old object lists `configuration-layer--layers` and
`configuration-layer--packages` have been each by two variables each:
- `configuration-layer--indexed-layers` which is a hash-map of all the
layer objects and `configuration-layer--used-layers` which is a list of
all _used_ layers symbols,
- symmetrically `configuration-layer--indexed-packages` which is a
hash-map of all the package objects and
`configuration-layer--used-packages` which is a list of all _used_
packages symbols.

The hash map `configuration-layer--layer-paths` is gone, now we create
directly layer objects when discovering the layers and set the :dir
property. Note that previously the layer paths were the parent directory
of the layer, now :dir is the layer path.

The function `configuration-layer//make-layer` is now similar to its
counterpart `configuration-layer//make-package` in the sense that it
takes an optional `obj` to be able to override its properties.

The functions `configuration-layer/declare-layer` and
`configuration-layer/declare-layers` now takes an optional parameter
`usedp` in order to declare used or not used layers. For convenience
new functions have been added: `configuration-layer/declare-used-layer`
and `configuration-layer/declare-used-layers`, users _must_ update all
occurrences of `configuration-layer/declare-layer` by
`configuration-layer/declare-used-layers` in their `layers.el` files.

`helm-spacemacs-help` and `ivy-spacemacs-help` are updated to match the
changes in `core-configuration-layer.el`.

Rename some variables to make them more explicit:
`configuration-layer-no-layer` -> `configuration-layer-exclude-all-layers`
`configuration-layer-distribution` -> `configuration-layer-force-distribution`
2016-07-28 23:26:54 -04:00
deb0ch e097600279 center ascii banners in home buffers
also remove now unneeded leading whitespaces in ascii banners
2016-07-05 19:50:57 +02:00
deb0ch 862eb68f7c fix home buffer random banner choice
Random banner choice was broken by the presence of the `img` directory.
Even if `random` was set instead of `random*` in .spacemacs file the
cate banner would still show.

This commit fixes this bug while simplifying the existing code by adding
a regexp filter to only choose "*.txt" files.
2016-07-05 00:23:16 -04:00
syl20bnr a713189685 core: fix footer display 2016-06-24 18:52:08 -04:00
ralesi 052142ab33 Add list length designstion to startup-list.
* Allow dotspacemacs-startup-list to contain cons cells, specifying list
  length for items.
* Deprecates dotspacemacs-startup-recent-list-size
2016-06-24 18:52:08 -04:00
ksjogo 4d4e89641e fix spacemacs buffer for -nw and --batch 2016-06-23 00:42:57 -04:00
Exaos-memes 904f7ea665 Define new variable: spacemacs-start-directory.
With this new variable, user can load spacemacs anywhere, e.g.
"~/.emacs.d/spacemacs/". Only user's cache directory is still hard-coded
as "~/.emacs.d/.cache/". If user want to use spacemacs this way, drop
one line as the below in "~/.emacs.d/init.el":

    (setq spacemacs-start-directory "~/.emacs.d/spacemacs/")
    (load-file (concat spacemacs-start-directory "init.el"))
2016-06-23 00:19:34 -04:00
Eivind Fonn dfad604faa core: fix possibly negative string length 2016-06-13 10:59:29 +02: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 627e934453 core: condensed versions into one string in left-hand side
spacemacs-version@emacs-version (distribution)
2016-06-05 00:19:18 -04:00
syl20bnr f3e50195d7 core: add footer in home buffer 2016-06-05 00:19:18 -04:00
syl20bnr 881b1f1e7f Rename special banner cate to cat 2016-05-29 23:27:31 -04:00
syl20bnr a2de9a63af Use :toggle keyword instead of when forms 2016-05-29 22:39:21 -04:00
syl20bnr 7945d39208 Move cate to 998 index and add support for `cate' value
Also removes some empty lines in the banner.
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
ralesi f305bd01f9 Center spacemacs banner in window at startup.
Provide facility to refresh spacemacs-buffer.
2016-05-14 14:23:40 -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 09ff77fbd4 Make it possible to use spacemacs-bootstrap layer as a distribution 2016-04-06 13:12:13 -04:00
syl20bnr 50515a826a core: new function spacemacs-buffer/display-info-box
Extract and rewrite the code to display the startup info box.
2016-04-03 02:51:44 -04:00
syl20bnr 6770969b6f core: add variables for core-spacemacs-buffer
- spacemacs-buffer-version-info
- spacemacs-buffer-logo-title
2016-04-01 00:26:19 -04:00
syl20bnr 82fdd9a511 Use evil in holy-mode
Motivation

While disabling Evil in holy-mode makes its implementation shorter and
sounds elegant on the paper, in practice it puts a big burden on the
configuration parts which need to know if Evil is enable or not. This is
a bad separation of concerns and the bunch of fixes that we were forced
to do in the past weeks shows this issue. Those fixes were about
removing the knowledge of the activation of Evil by implementing new
dispatching functions to be used by layers, this is cumbersome and makes
Spacemacs layer configuration more subtle which is not good. There was
additional bad consequences of the removal of Evil state like the
impossibility to use Evil lisp state or iedit states, or we would have
been forced to implement a temporary activation of Evil which is
awkward.

Instead I reintroduce Evil as the central piece of Spacemacs design thus
Evil is now re-enabled in holy-mode. It provides the abstraction we need
to isolate editing styles and be able to grow the Spacemacs
configuration coverage sanely. Layers don't need to check whether the
holy mode is active or not and they don't need to know if Evil is
available (it is always available). We also don't need to write
additional dispatching functions, this is the job of Evil, and I think
it provides everything for this. Ideally configuration layer should be
implemented with only Evil in mind and the holy-mode (and hybrid-mode)
should magically make it work for Emacs style users, for instance we can
freely use `evil-insert-state` anywhere in the code without any guard.

Evil is now even more part of Spacemacs, we can really say that
Spacemacs is Emacs+Evil which is now an indivisible pair. Spacemacs
needed this stable API to continue on the right track.

While these changes should be rather transparent to the user, I'm sorry
for this experimental period, I failed to see all the implications of
such a change, I was just excited about the possibility to make Evil
optional. The reality is that Spacemacs has to embrace it and keep its
strong position on being Emacs+Evil at the core.

Implementation

- insert, motion and normal states are forced to emacs state using an
advice on `evil-insert-state`, `evil-motion-state` and
`evil-normal-state` respectively. These functions can be used freely in
the layer configuration.
- A new general hook `spacemacs-editing-style-hook` allow to hook any
code that need to be configured based on the editing style. Functions
hooked to this hook takes the current style as parameter, this
basically generalize the hook used to setup hjkl navigation bindings.
- ESC has been removed from the emacs state map.
- Revert unneeded changes
  - Revert "evil: enter insert-state only from normal-state"
    commit bdd702dfbe.
  - Revert "avoid being evil in deft with emacs editing style"
    commit f3a16f49ed.

Additional changes

All editing style packages have been moved to a layer called
`spacemacs-editing-styles`

Notes

I did not have time to attack hybrid mode, I should be able to do it
later.
2016-03-13 21:16:55 -04:00
Igor Avdeev 0e416290c4 Fix display of recent bookmarks without filename 2016-02-14 20:57:46 -05:00