Commit graph

103 commits

Author SHA1 Message Date
Henrik Lissner
7d0caf3efd
New editor/fold module
Extracted from feature/evil and emacs/hideshow.
2019-02-18 00:47:46 -05:00
Henrik Lissner
3dcd253f71
Remove emacs/ediff & move to core-ui 2019-02-17 21:54:26 -05:00
Henrik Lissner
a72a0e6a62
Replace magithub with forge
Should also fix void-function/void-variable errors caused by evil-magit
depending on the newer version of magit (#1174).

Also introduces a redesign of the SPC g prefix.
2019-02-16 18:26:17 -05:00
Henrik Lissner
4b129cb17d
Fix rg/ag in eshell #1122
Arguments aren't implicitly passed to aliases.
2019-01-22 19:29:13 -05:00
Henrik Lissner
b56639e31b
Remove deprecated set! & def-setting! macros 2019-01-05 17:48:46 -05:00
Henrik Lissner
19987df00a
Add IS-BSD constant
Fixes dired gls support on BSD OSes (and not just MacOS).
2019-01-05 16:06:26 -05:00
Alex Ragone
69c277ffce fix: disable verbose message for dired-omit
To avoid endless spam in *Messages*, disable "Omitted 2 lines" every
time a new dired buffer is opened.
2018-12-27 16:37:44 +13:00
Henrik Lissner
d6cb0ec5f5
General cleanup & minor refactoring 2018-12-22 04:25:15 -05:00
Henrik Lissner
4daa9271a0
Introduce general.el & rewrite map!
+ Now uses an overriding keymap for leader keys, so that it is always
  available, even outside of normal/visual states. In insert/emacs
  states, or in sessions where evil is absent, an alternative prefix is
  used for leader/localleader keys. See these variables:
  + doom-leader-prefix
  + doom-leader-alt-prefix
  + doom-localleader-prefix
  + doom-localleader-alt-prefix
+ Keybinds now support alternative prefixes through the new :alt-prefix
  property. This is useful for non-evil users and non-normal evil
  states. By default, this is M-SPC (leader) and M-SPC m (localleader).
+ Removed +evil-commands flag from config/default (moved to
  feature/evil/+commands.el).
+ config/default/+bindings.el has been split into
  config/default/+{evil,emacs}-bindings.el, which one is loaded depends
  on whether evil is present or not. The latter is blank, but will soon
  be populated with a keybinding scheme for non-evil users (perhaps
  inspired by #641).
+ The define-key! macro has been replaced; it is now an alias for
  general-def.
+ Added unmap! as an alias for general-unbind.
+ The following modifier key conventions are now enforced for
  consistency, across all OSes:
    alt/option      = meta
    windows/command = super
  It used to be
    alt/option      = alt
    windows/command = meta
  Many of the default keybinds have been updated to reflect this switch,
  but it is likely to affect personal meta/super keybinds!

The map! macro has also been rewritten to use general-define-key. Here
is what has been changed:

+ map! no longer works with characters, e.g. (map! ?x #'do-something) is
  no longer supported. Keys must be kbd-able strings like "C-c x" or
  vectors like [?C-c ?x].
+ The :map and :map* properties are now the same thing. If specified
  keymaps aren't defined when binding keys, it is automatically
  deferred.
+ The way you bind local keybinds has changed:

    ;; Don't do this
    (map! :l "a" #'func-a
          :l "b" #'func-b)
    ;; Do this
    (map! :map 'local "a" #'func-a
                      "b" #'func-b)

+ map! now supports the following new blocks:
  + (:if COND THEN-FORM ELSE-FORM...)
  + (:alt-prefix PREFIX KEYS...) -- this prefix will be used for
    non-normal evil states. Equivalent to :non-normal-prefix in general.
+ The way you declare a which-key label for a prefix key has changed:

    ;; before
    (map! :desc "label" :prefix "a" ...)
    ;; now
    (map! :prefix ("a" . "label") ...)

+ It used to be that map! supported binding a key to a key sequence,
  like so:

    (map! "a" [?x])  ; pressing a is like pressing x

  This functionality was removed *temporarily* while I figure out the
  implementation.

Addresses: #448, #814, #860
Mentioned in: #940
2018-12-22 04:14:43 -05:00
Henrik Lissner
ce38a80cf8
emacs/dired: refactor #1038
+ Removed ranger/dired-setup hook and performed its config globally
+ Lazy-loaded ranger
+ Removed unnecessary `:defer t`s (redundant with :commands and :hook)
  and `:commands` (redundant with :hook)
+ Set image-dired-dir before trying to create it, to give users an
  opportunity to modify it before it is created
+ Use sharp quotes consistently for keybind commands
2018-12-13 15:44:43 -05:00
Ting Zhou
eedbbdd9c1 emacs/dired: use all-the-icons font lock fix recipe 2018-12-08 21:52:24 -08:00
Ting Zhou
d6ad5942be emacs/dired: move ranger module to ranger feature in dired module 2018-12-07 22:27:03 -08:00
Ting Zhou
5698066c0a emacs/ranger: check GUI for all-the-icons-dired-mode 2018-12-05 23:15:23 -08:00
Ting Zhou
b00ce82ef9 emacs/ranger: add ranger module to doom 2018-12-05 23:11:26 -08:00
Henrik Lissner
51190fa771
More descriptive signature for set-electric!
And mention that electric-indent-local-mode is enabled by this in its
docstring.
2018-10-16 18:30:44 -04:00
Henrik Lissner
868a0ab9b9
emacs/eshell: fix wrong-type-arg: stringp errors
Fix old usage of projectile API.
2018-10-01 12:06:08 -04:00
Henrik Lissner
53fe7a1f04 Refactor Project API to reflect changes upstream
projectile-project-root no longer returns `default-directory` if not in
a project (it returns nil). As such, doom-project-* functions (and their
uses) have been refactored.

+ doom-project-p & doom-project-root are aliases for
  projectile-project-p & projectile-project-root.
+ doom-project-{p,root,name,expand} now has a DIR argument (for
  consistency, since projectile-project-name and
  projectile-project-expand do not).
+ The nocache parameter is no longer necessary, as projectile's caching
  behavior is now more sane.
+ Removed some projectile advice/hacks that are no longer necessary.
+ Updated unit tests
2018-09-28 21:13:27 -04:00
Henrik Lissner
6fce87bd06 feature/evil: refactor folding & outline support
Code folding commands will now obey outline headers (if
outline-minor-mode is on and in outline-mode).
2018-09-20 22:26:36 -04:00
Edwin Török
b9c966ec54 Backport to Emacs 25: avoid (setf (alist-get ... 'equal))
We would need to use `'equal` for comparison, but Emacs 25 only allows `'eq`.
Using `advice-add` to override `alist-get` does not work, because `setf`
has special handling for `alist-get`.

`repl.el`: Switch to a hash table which already supports multiple comparison
functions, and changing of elements even in Emacs 25.
`eshell/autoload/settings.el`: use conditional set-or-push.
Drop `doom*alist-get`, it is unused now.

Thanks to @hlissner for the reimplementation.
2018-09-12 23:03:02 +01:00
Henrik Lissner
7d3ffdff06
Remove third line in section headers
This is truly important stuff. We've saved many lives with this update.
2018-09-09 09:58:19 -04:00
Henrik Lissner
628b40f882
emacs/ediff: fix hooks not being appended 2018-09-09 09:58:19 -04:00
Henrik Lissner
417736ecf6
Move hideshow config from ui/doom->emacs/hideshow 2018-08-03 18:20:27 +02:00
Henrik Lissner
b7bbf4d7ed
Add git-commit-mode to yas-extra-modes
Fixes snippets in git-commit-mode.
2018-08-01 19:26:20 +02:00
Henrik Lissner
74b700f9a7
Add copy-to-clipboard support to :gbr & +vc/git-browse 2018-07-31 16:33:16 +02:00
Henrik Lissner
cbc59f9333
Appease the byte-compiler 2018-07-30 12:10:11 +02:00
Henrik Lissner
cb7e471c90
General reformatting & comment revision/cleanup 2018-07-29 19:31:33 +02:00
Henrik Lissner
35e5a47e9f
Rewrote indentation detection
More robust and easier to customize.
2018-07-29 19:31:32 +02:00
Henrik Lissner
143fdd17e1
Use insert mode only if git commit is empty 2018-07-29 17:42:00 +02:00
Henrik Lissner
d094162d31
Refactor how git-timemachine loads magit-blame
Loading magit-blame immediately after git-timemachine is premature, only
one command uses magit-blame (git-timemachine-blame), so we defer it
until that command is called (also, it makes more sense to be in the
emacs/vc module, than tools/magit).
2018-07-29 17:42:00 +02:00
Henrik Lissner
a2ffbe4ede
Add new emacs/hideshow module
Brings better default code folding support to various languages, like
yaml, ruby, matlab, haml and vimrc. Hideshow is still quite
unsophisticated and will need the help of another package for complete
code folding functionality. Perhaps origami or vimish fold.

The code-folding functional in the feature/evil module will soon be
replaced by that.
2018-07-29 17:41:59 +02:00
Henrik Lissner
ec49220740
emacs/dired: add-hook -> :hook 2018-07-21 01:29:38 +02:00
Henrik Lissner
d6461d495b
General & minor reformatting+refactor 2018-07-19 03:40:31 +02:00
Henrik Lissner
71dd7ff0f4
Helpfully removes this totally helpful comment
How helpful!
2018-07-14 19:38:29 +02:00
Henrik Lissner
e5125fbb26
Remove unused +vc-auto-hydra-smerge variable 2018-07-12 19:03:15 +02:00
Henrik Lissner
1880fb8a7d
Fix eshell+persp-mode integration
Would cause a non-descript wrong-number-of-arguments error when trying
to switch workspaces.
2018-07-11 12:42:33 +02:00
Henrik Lissner
e2442e7d80
Fix per-workspace eshell buffers 2018-07-11 00:04:24 +02:00
Henrik Lissner
a1b4616236
emacs/eshell: minor refactor 2018-07-11 00:03:32 +02:00
Henrik Lissner
29c2632cab
Fix infinite recursion in smerge-mode #745
Also renames +hydra-smerge -> +vc-smerge-hydra, and no longer
auto-enables the hydra on smerge-mode (must find a better way).
2018-07-09 21:50:19 +02:00
Henrik Lissner
29ae7f935f
Add eshell/mkdir-and-cd command
I'd recommend aliasing this to mkdircd or take.
2018-07-06 15:34:26 +02:00
Henrik Lissner
a0b7ccb74b
emacs/eshell: restore margins
They were disabled because of shell width issues, but removing the
margin didn't change the situation!
2018-07-03 20:07:14 +02:00
Henrik Lissner
637131a264
eshell: remove margins & wrap lines
Margins cause many full-line progress bars to become jumpy; scrolling to
follow the cursor at eol (just beyond the edge of the window). It's
better to not use margins at all.

Also, this change removes the $ truncation glyphs and enables
visual-line-mode to wrap long text.
2018-07-01 02:06:03 +02:00
Henrik Lissner
866c97bcb2
emacs/imenu: remove cleanup-on-popup-close hack
This hack is no longer necessary now that imenu-list-smart-toggle
exists.

And set :quit nil for the Ilist popup rule (since it can be toggled
externally).
2018-06-30 23:27:06 +02:00
Henrik Lissner
5e9f74c269
Add l and f default aliases to eshell
For ls -lh and find-file, respectively.
2018-06-30 13:21:24 +02:00
Henrik Lissner
091a0a5f04
Remove unused window-state letvar 2018-06-30 02:58:25 +02:00
Henrik Lissner
2dbdbc245c
eshell: ignore errors thrown by pcomplete 2018-06-30 02:29:18 +02:00
Henrik Lissner
e9c97d7ad0
Prevent eshell from switching to existing eshell
Prevent duplicate eshell buffers as a result of quitting a second eshell
buffer.
2018-06-30 02:29:18 +02:00
Henrik Lissner
5a78b8db0c
Enable smartparens-mode in eshell
So we can have some o'dat autopairing goodness in our shell.
2018-06-29 01:22:06 +02:00
Henrik Lissner
55104b9f89
Fix "home/~" PWD in eshell prompt 2018-06-28 19:29:26 +02:00
Henrik Lissner
40c8d7bd0e
Fix eshell-z 2018-06-28 19:23:31 +02:00
Henrik Lissner
9157d3b3a6
eshell: alias clear to clear-scrollback
This is more in line with how clear behaves in shells.
2018-06-28 18:46:51 +02:00