Commit graph

342 commits

Author SHA1 Message Date
Henrik Lissner
a0ffc38117
Fix listp errors in eshell when using aliases 2018-06-23 20:29:54 +02:00
Henrik Lissner
f6dc6ac74e
Refactor out map.el usage
After some profiling, it turns out map-put and map-delete are 5-7x
slower (more on Emacs 25) than delq, setf/alist-get and add-to-list for
small lists (under 250 items), which is exactly how I've been using
them.

The only caveat is alist-get's signature is different on Emacs 25, thus
a polyfill is necessary in core-lib.
2018-06-23 19:53:54 +02:00
Benjamin Andresen
61cdac230f ui/vc emacs/vc: unify hydra design
this design will also break less based on the fonts
2018-06-23 16:25:58 +02:00
Henrik Lissner
5531d7115a
Fix indentation for many autodef setters 2018-06-22 01:49:21 +02:00
Henrik Lissner
22c145105d
Add unset capability to set-electric! 2018-06-22 01:49:21 +02:00
Henrik Lissner
60779c9aed
feature/version-control => ui/vc-gutter, emacs/vc
Reorganize vcs functionality. Moves the custom fringe bitmaps into :ui
vc-gutter.
2018-06-22 01:49:20 +02:00
Henrik Lissner
7f79eb4579
Major redesign of emacs/eshell
+ :sh can now be fed commands to run immediately, e.g. :sh cd %:P to
  start from the current project root.
+ Eshell will spawn a new eshell on every split. This can be controlled
  via `+eshell-enable-new-shell-on-split'
+ Eshell can be configured to kill the window when you kill the eshell
  process. This is disabled by default. See
  `+eshell-kill-window-on-exit'. Some commands ignore this, like the
  quit-and-close command (I alias this to "q").
+ eshell-directory-name has been moved to doom-etc-dir/eshell. It will
  seem like eshell has forgotten all your history, but you can move
  ~/.eshell (or ~/.doom.d/eshell) to ~/.emacs.d/.local/etc/eshell and
  you'll be fine.
+ eshell-aliases-file has been moved to ~/.doom.d/eshell_aliases by
  default.
+ Automatic writing to eshell-aliases-file has been disabled. No shell
  so aggressively persists aliases. You may maintain it yourself, or use
  the new +eshell-aliases variable to customize eshell from Doom.
+ C-s now invokes a history search with ivy/helm.
+ C-c s and C-c v split horizontally and vertically. Inspired by tmux.
+ C-c x kill the current eshell and its window. Inspired by tmux.j
+ New set-eshell-alias! autodef for defining your own aliases.
+ +eshell/open-workspace has been replaced with +eshell/open-fullscreen.
+ Added the "cd-to-project" command. I suggest you alias it.
2018-06-18 22:31:27 +02:00
Henrik Lissner
4685eddb66
Don't eat stacks in backtraces in debug mode
The error handlers were a little too effective. They obscured a large
chunk of the stacktrace after errors, even in debug mode. This fixes
that and ensures backtraces in debug mode are more helpful.
2018-06-18 17:14:17 +02:00
Henrik Lissner
c8aba6f552
Open eshell in project root by default
If passed the universal arg (SPC u SPC o e) or (C-u M-x +eshell/open),
it will open in the current directory.
2018-06-18 14:42:42 +02:00
Henrik Lissner
6808c46b58
💥 Change set-popup-rule! usage
Now accepts a flat plist of all its former parameters, including new
:parameters and :actions properties to increase your control over the
fate of your windows.

The old usage of set-popup-rule! is deprecated and may not work right!

The :ui popup module has also seen a major refactor to improve
efficiency and load times.

Sorry! This is the last "big" change before 2.1!
2018-06-18 02:34:16 +02:00
Henrik Lissner
41bac99a5f
eshell: color prompt red if last command failed 2018-06-17 02:34:06 +02:00
Henrik Lissner
17981d6a61
Conform hook names to conventions
Also minor reformatting & comment corrections.
2018-06-17 02:25:12 +02:00
Henrik Lissner
a6116c6547
eshell: fix prompt face bleeding into command 2018-06-17 02:21:46 +02:00
Henrik Lissner
cc6809bcf8
Move windows with C-hjkl eshell's insert mode 2018-06-16 21:08:08 +02:00
Henrik Lissner
48c9936f8d
Fix eshell buffers omitted from workspace buffers
The mode was set before the window was displayed, which is where
persp-mode's check is.
2018-06-16 21:04:20 +02:00
Henrik Lissner
b991af552c
A slightly more informative default eshell banner 2018-06-16 16:59:33 +02:00
Henrik Lissner
a4ccc2fc81
Use shrink-path on eshell PWD in default prompt
Makes longer paths easier to deal with.
2018-06-16 16:51:43 +02:00
Henrik Lissner
2addfebf8e
Refactor eshell-visual-commands (and add ncmpcpp) 2018-06-16 16:42:26 +02:00
Henrik Lissner
d9944bfc7f
Replace fringes in eshell buffers with a margin
I think it looks better this way. Especially if you use solaire-mode.
2018-06-16 16:40:08 +02:00
Henrik Lissner
aa1b203d1f
Add z and bd commands to eshell, plus aliases 2018-06-16 16:38:39 +02:00
Henrik Lissner
c0f601721c
emacs/eshell: fix pcomplete+ivy/helm integration
Use ivy/helm instead of the popup at the bottom.
2018-06-16 16:37:43 +02:00
Henrik Lissner
f81a0e6f41
Remove redundant def-setting! docstrings
def-setting! will now grab the autodef's docstring if it has an
:obsolete property defined.
2018-06-15 16:54:39 +02:00
Henrik Lissner
51aa60d67d
Fix set-electric! complaining about :char
A typo! Should be :chars
2018-06-15 16:50:39 +02:00
Henrik Lissner
cccccbb3fd
set-electric!: fix & improve error handling 2018-06-15 16:20:20 +02:00
Henrik Lissner
c22b3da9f9
Move emacs/electric-indent to emacs/electric
This module will later be expanded to customize more of electric's
functionality.
2018-06-15 16:20:20 +02:00
Henrik Lissner
9f0ebe42e8
Replace :electric with set-electric-rules!
And general refactor of the emacs/electric-indent module.

Also updates (set! :electric ...) references in various :lang modules
2018-06-15 13:32:07 +02:00
Henrik Lissner
98d2f1de3f
Add set-env! autodef; make :env obsolete 2018-06-15 03:42:01 +02:00
Henrik Lissner
d8b1e469bc
Introduce autodefs to replace some settings
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!

I am slowly phasing out the setting system (def-setting! and set!),
starting with these.

What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.

The old set! function will still work, for a while.
2018-06-15 03:42:01 +02:00
Henrik Lissner
40e4c872f4
Remove redundant eshell-error-if-no-glob setting 2018-06-14 23:40:08 +02:00
Henrik Lissner
209f33c12e
Refactor tools/eshell
Make eshell-directory-name easier to customize & remove unnecessary
def-package! block.
2018-06-14 23:36:42 +02:00
Henrik Lissner
64d354ae35
emacs/ediff: remove evil-ediff package
Evil+ediff integration was merged into evil-collection.
2018-06-12 21:07:34 +02:00
Henrik Lissner
fbdbd26851
emacs/term: minor refactor of universal args 2018-06-10 17:28:17 +02:00
Henrik Lissner
625a8a9056
Fix multi-term buffers missing from buffer list
Caused because switch buffer hooks weren't triggering, due to
multi-term's odd use of set-buffer before switch-to-buffer.
2018-06-04 21:17:49 +02:00
Henrik Lissner
3027ed2f7f
Add new doom|mark-buffer-as-real hook to term/eshell
This is simpler (and perhaps faster) than doom-real-buffer-functions.
Better to reserve that for more complex logic.
2018-06-04 21:17:49 +02:00
Henrik Lissner
1e81a35461
Minimize dependence on map!
This is in preparation for general.el integration coming in 2.1.1. It is
very likely that map! will change (and even more, be split into several
macros). Not much, but change none-the-less. Specifically, the state
keywords (e.g. :nvi, :n, :i) will be removed in favor of a :state
property that takes a list, e.g. (normal visual insert).

In any case, both map! and general are also relatively expensive
compared to define-key and evil-define-key* (and the new define-key!
macro), so use that when we can.

This also means changes to either API won't affect Doom's modules in the
long term.
2018-06-03 15:46:00 +02:00
Henrik Lissner
334b6f3adf
tools/dired: SPC o - => dired-jump; show symlink targets
Inspired by #625
2018-06-01 13:46:52 +02:00
Henrik Lissner
601c9a654e
Merge evil-collection-dired into emacs/dired 2018-05-31 13:59:21 +02:00
Henrik Lissner
3b85720c9c
Fix incorrect uses of add-to-list 2018-05-28 12:26:03 +02:00
Henrik Lissner
bdee28609a
New emacs/ediff module
Ediff config was moved out of core. Also includes evil compatibility
(mvoed out of feature/evil) & wconf save/restore.
2018-05-27 12:52:28 +02:00
Henrik Lissner
e2d055a40b
💥 Move dired, electric-indent, eshell, imenu, term modules to :emacs 2018-05-27 12:52:28 +02:00
Henrik Lissner
8122c9f653 Remove :emacs :fun and :os (moved) 2017-02-20 00:26:08 -05:00
Henrik Lissner
f453b3cee1 Reorganize modules 2017-02-20 00:23:03 -05:00