Commit Graph

99 Commits

Author SHA1 Message Date
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
091a0a5f04 Remove unused window-state letvar 2018-06-30 02:58:25 +02:00
2dbdbc245c eshell: ignore errors thrown by pcomplete 2018-06-30 02:29:18 +02:00
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
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
55104b9f89 Fix "home/~" PWD in eshell prompt 2018-06-28 19:29:26 +02:00
40c8d7bd0e Fix eshell-z 2018-06-28 19:23:31 +02:00
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
1a0251c1cf Move eshell config files into doom-private-dir
Introduce new +eshell-config-dir variable, where you can store your
eshell aliases and rc files.
2018-06-28 18:34:02 +02:00
88ba758ae3 Add eshell-z plugin
And replace z alias with it.
2018-06-28 18:32:27 +02:00
ca9da4c272 Fix eshell popup splits not closing on exit
Fixes "Attempt to delete main window of frame" errors, and ensrues an
eshell buffer is selected, if you were in a popup.
2018-06-28 18:20:30 +02:00
05bdb1e12c eshell-input-filter = eshell-input-filter-initial-space
Don't record a command in history if prefixed with whitespace.
2018-06-28 16:58:28 +02:00