Commit Graph

113 Commits

Author SHA1 Message Date
Henrik Lissner
6b69eaa397
Minor refactors across the board 2019-04-26 17:42:44 -04:00
Henrik Lissner
a4c5396558
Add better-jumper
Replaces evil's jumplist; makes its functionality available for non evil
users.
2019-04-24 18:16:04 -04:00
Henrik Lissner
77e4cc4d58
💥 Remove :feature category
:feature was a "catch-all" category. Many of its modules fit better in
other categories, so they've been moved:

- feature/debugger -> tools/debugger
- feature/evil -> editor/evil
- feature/eval -> tools/eval
- feature/lookup -> tools/lookup
- feature/snippets -> editor/snippets
- feature/file-templates -> editor/file-templates
- feature/workspaces -> ui/workspaces

More potential changes in the future:

- A new :term category for terminal emulation modules (eshell, term and
  vterm).
- A new :os category for modules dedicated to os-specific functionality.
  The :tools macos module would fit here, but so would modules for nixos
  and arch.
- A new :services category for web-service integration, like wakatime,
  twitter, elfeed, gist and pastebin services.
2019-04-24 18:16:04 -04:00
Henrik Lissner
0a1de03ca1
Remove eshell/term from dtrt excluded modes
Unnecessary because their buffers don't make it through
doom|detect-indentation's condition anyway.
2019-03-28 01:56:09 -04:00
Henrik Lissner
2dc52bc9be
💥 Replace exec-path-from-shell w/ 'bin/doom env'
IMPORTANT: This is a breaking update for Mac users, as your shell
environment will no longer be inherited correctly (with the removal of
exec-path-from-shell). The quick fix is: 'bin/doom env refresh'. Also,
the set-env! autodef now does nothing (and is deprecated), be sure to
remove calls to it in your config.

Smaller changes:
+ This update also adds --no-* switches to doom quickstart
+ Includes general improvements to the documentation of several bin/doom
  commands.
+ Moves doom/reload* commands to core/autoload/config.el
+ doom/reload-project has been removed (it didn't actually do anything)

The breaking change:
This update adds an "envvar file" to Doom Emacs. This file is generated
by `doom env refresh`, populated with variables scraped from your shell
environment (from both non-interactive and interactive sessions). This
file is then (inexpensively) loaded at startup, if it exists.

+ The file is manually generated with `doom env refresh`.
+ It can be regenerated automatically whenever `doom refresh` is run by
  running `doom env enable` (`doom env clear` will reverse this and
  delete the env file).
+ `doom quickstart` will ask if you want to auto-generate this envvar
  file. You won't need it if you're confident Emacs will always be
  started from the correct environment, however.
+ Your env file can be reloaded from a running Emacs session with `M-x
  doom/reload-env`. Note: this won't work if the Emacs session you're
  running it in doesn't have a correct SHELL set. i.e. don't use this to
  create your first env file!

The idea isn't mine -- it's borrowed from Spacemacs -- and was
introduced to me in #1053 by @yurimx. I was impressed with it. Prior to
this, I was unhappy with exec-path-from-shell (no hate to the dev, I
understand its necessity), and 'doom patch-macos' wasn't ideal for mac
users (needed to be reapplied every time you update Emacs). What's more,
many users (even Linux users) had to install exec-path-from-shell
anyway.

This solution suffers from none of their shortcomings. More reliable
than patch-macos, more performant and complete than
exec-path-from-shell, and easily handled by bin/doom.
2019-03-28 01:56:09 -04:00
Henrik Lissner
f02e7faefb
emacs/dired: ranger-show-literal = nil 2019-03-09 19:56:48 -05:00
Henrik Lissner
c07f43bba3
Remove --group-directories-first arg for bsd ls 2019-03-02 13:49:39 -05:00
Henrik Lissner
7b2e80c711
Remove bash, zsh, fish from eshell-visual-commands
It would affect non-interactive shell scripts run through these
shells (like homebrew).
2019-03-02 02:04:11 -05:00
Henrik Lissner
6d3df42352
More conservative electric-indent-local-mode
Prevent them from propagating to derived modes (I'm looking at you c
modes!)
2019-03-02 01:36:53 -05:00
Henrik Lissner
6fc7b8c1c4
Better electric-indent uninhibiter
Will now work in C modes as well as Csharp, Java and Python; possibly
others that forcibly set electric-indent-inhibit.
2019-02-27 18:38:28 -05:00
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