Commit Graph

110 Commits

Author SHA1 Message Date
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
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
f02e7faefb emacs/dired: ranger-show-literal = nil 2019-03-09 19:56:48 -05:00
c07f43bba3 Remove --group-directories-first arg for bsd ls 2019-03-02 13:49:39 -05:00
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
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
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
7d0caf3efd New editor/fold module
Extracted from feature/evil and emacs/hideshow.
2019-02-18 00:47:46 -05:00
3dcd253f71 Remove emacs/ediff & move to core-ui 2019-02-17 21:54:26 -05:00
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
4b129cb17d Fix rg/ag in eshell #1122
Arguments aren't implicitly passed to aliases.
2019-01-22 19:29:13 -05:00
b56639e31b Remove deprecated set! & def-setting! macros 2019-01-05 17:48:46 -05:00
19987df00a Add IS-BSD constant
Fixes dired gls support on BSD OSes (and not just MacOS).
2019-01-05 16:06:26 -05:00
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
d6cb0ec5f5 General cleanup & minor refactoring 2018-12-22 04:25:15 -05:00
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
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
eedbbdd9c1 emacs/dired: use all-the-icons font lock fix recipe 2018-12-08 21:52:24 -08:00
d6ad5942be emacs/dired: move ranger module to ranger feature in dired module 2018-12-07 22:27:03 -08:00
5698066c0a emacs/ranger: check GUI for all-the-icons-dired-mode 2018-12-05 23:15:23 -08:00
b00ce82ef9 emacs/ranger: add ranger module to doom 2018-12-05 23:11:26 -08:00
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
868a0ab9b9 emacs/eshell: fix wrong-type-arg: stringp errors
Fix old usage of projectile API.
2018-10-01 12:06:08 -04:00
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
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
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
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
628b40f882 emacs/ediff: fix hooks not being appended 2018-09-09 09:58:19 -04:00
417736ecf6 Move hideshow config from ui/doom->emacs/hideshow 2018-08-03 18:20:27 +02:00
b7bbf4d7ed Add git-commit-mode to yas-extra-modes
Fixes snippets in git-commit-mode.
2018-08-01 19:26:20 +02:00
74b700f9a7 Add copy-to-clipboard support to :gbr & +vc/git-browse 2018-07-31 16:33:16 +02:00
cbc59f9333 Appease the byte-compiler 2018-07-30 12:10:11 +02:00
cb7e471c90 General reformatting & comment revision/cleanup 2018-07-29 19:31:33 +02:00
35e5a47e9f Rewrote indentation detection
More robust and easier to customize.
2018-07-29 19:31:32 +02:00
143fdd17e1 Use insert mode only if git commit is empty 2018-07-29 17:42:00 +02:00
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
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
ec49220740 emacs/dired: add-hook -> :hook 2018-07-21 01:29:38 +02:00
d6461d495b General & minor reformatting+refactor 2018-07-19 03:40:31 +02:00
71dd7ff0f4 Helpfully removes this totally helpful comment
How helpful!
2018-07-14 19:38:29 +02:00
e5125fbb26 Remove unused +vc-auto-hydra-smerge variable 2018-07-12 19:03:15 +02:00
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
e2442e7d80 Fix per-workspace eshell buffers 2018-07-11 00:04:24 +02:00
a1b4616236 emacs/eshell: minor refactor 2018-07-11 00:03:32 +02:00
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
29ae7f935f Add eshell/mkdir-and-cd command
I'd recommend aliasing this to mkdircd or take.
2018-07-06 15:34:26 +02:00
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
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
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
5e9f74c269 Add l and f default aliases to eshell
For ls -lh and find-file, respectively.
2018-06-30 13:21:24 +02:00