Commit Graph

175 Commits

Author SHA1 Message Date
82ae3a73f3 def-advice!->defadvice! & conform to new advice conventions
This commit does two things:

- Renames def-advice! to defadvice!, in the spirit of naming convenience
  macros after the function/macro they enhance or replace.
- Correct the names of advice functions to indicate visibility and
  intent. A public advice function like doom-set-jump-a is meant to be
  used elsewhere. A private one like +dired--cleanup-header-line-a
  shouldn't -- it likely won't work anywhere but the function(s) it was
  made to advise.
2019-07-23 17:24:56 +02:00
76cacb5bfe 💥 Rename def-package! -> use-package!
Calling this pivotal macro "def-package!" has frequently been a source
of confusion. It is a thin wrapper around use-package, and it should be
obvious that it is so. For this reason, and to match the naming
convention used with other convenience macros/wrappers, it is now
use-package!.

Also changes def-package-hook! -> use-package-hook!

The old macros are now marked obsolete and will be removed when straight
integration is merged.
2019-07-23 12:50:45 +02:00
060ede0e2e General, minor reformatting across the board
And an offering of blood to our great lord Byte Compiler-sama.
2019-07-22 02:37:45 +02:00
149b2617b0 💥 revise hook/var fns naming convention (2/2)
This is second of three big naming convention changes. In this commit,
we change the naming conventions for hook functions and variable
functions:

1. Replace the bar | to indicate a hook function with a -h suffix, e.g.

     doom|init-ui -> doom-init-ui-h
     doom|run-local-var-hooks -> doom-run-local-var-hooks-h

2. And add a -fn suffix for functions meant to be set on variables,
   e.g.

     (setq magit-display-buffer-function #'+magit-display-buffer-fn)

See ccf327f8 for the reasoning behind these changes.
2019-07-22 02:30:38 +02:00
51d3b1b424 💥 revise advice naming convention (1/2)
This is first of three big naming convention updates that have been a
long time coming. With 2.1 on the horizon, all the breaking updates will
batched together in preparation for the long haul.

In this commit, we do away with the asterix to communicate that a
function is an advice function, and we replace it with the '-a' suffix.
e.g.

  doom*shut-up -> doom-shut-up-a
  doom*recenter -> doom-recenter-a
  +evil*static-reindent -> +evil--static-reindent-a

The rationale behind this change is:

1. Elisp's own formatting/indenting tools would occasionally struggle
   with | and * (particularly pp and cl-prettyprint). They have no
   problem with / and :, fortunately.
2. External syntax highlighters (like pygmentize, discord markdown or
   github markdown) struggle with it, sometimes refusing to highlight
   code beyond these symbols.
3. * and | are less expressive than - and -- in communicating the
   intended visibility, versatility and stability of a function.
4. It complicated the regexps we must use to search for them.
5. They were arbitrary and over-complicated to begin with, decided
   on haphazardly way back when Doom was simply "my private config".

Anyhow, like how predicate functions have the -p suffix, we'll adopt the
-a suffix for advice functions, -h for hook functions and -fn for
variable functions.

Other noteable changes:
- Replaces advice-{add,remove}! macro with new def-advice!
  macro. The old pair weren't as useful. The new def-advice! saves on a
  lot of space.
- Removed "stage" assertions to make sure you were using the right
  macros in the right place. Turned out to not be necessary, we'll
  employ better checks later.
2019-07-22 02:27:45 +02:00
fb16afb4f2 ivy-prescient-retain-classic-highlighting = t
Because prescient's highlighting turns any assumptions themes make
about ivy's faces on their head, making them look odd.
2019-07-11 17:23:20 +02:00
a201409fdd Minor refactors across the board 2019-07-10 21:27:12 +02:00
563629cbd3 Remove unneeded autoloads 2019-07-06 23:22:27 +02:00
9a8faf1df3 completion/ivy: don't ignore order in file search 2019-07-02 13:12:21 +02:00
b5c5b7f10d Move posframe+persp-mode fix to ui/workspaces 2019-06-26 14:31:06 +02:00
33ae889e39 Enable evil-collection-ivy 2019-06-14 11:05:54 +02:00
b1ecd68381 completion/ivy: fix +fuzzy & +prescient
Causd by ivy-re-builders-alist overwriting their modifications.
2019-06-11 18:11:51 +02:00
766fc3e4a9 completion/ivy: inhibit ivy completion in evil-ex
`ivy-completion-in-region' struggles with completing certain
+evil-ex-specific constructs, like globs (:e prefix*.el) or vim filename
modifiers (:e %:p:h).
2019-06-10 09:38:56 +02:00
1de21f57eb completion/ivy: use ivy--regex-ignore-order 2019-06-10 09:38:55 +02:00
761bc570aa completion/ivy: ivy-posframe upstream update 2019-06-04 00:01:28 +02:00
9f4352006f Increase ivy-flx-limit for improved fuzzy behavior
The default setting of 200 is too low for common use-cases like
`describe-function`, `describe-variable` or `counsel-projectile`.

This has a performance impact, but it's barely noticeable on a fast
machine. If performance is not acceptable, set `ivy-flx-limit` lower or
consider disabling the `+fuzzy` feature entirely.
2019-05-29 00:46:57 +10:00
2a511a6576 Add +prescient option for :completion ivy
This provides an alternative backend for filtering and sorting ivy
searches. Uses prescient instead of flx for fuzzy completion when both
+prescient and +fuzzy are selected.
2019-05-29 00:46:57 +10:00
fe36bbca1f Standardize C-c C-e for ivy wgrep
Removes backtab in favor of standardizing C-c C-e. Already used by helm,
wgrep and dired.
2019-05-21 00:30:42 -04:00
a7069b93f2 Remove vestigial imenu-anywhere remappings 2019-05-20 21:09:10 -04:00
39d4fa2256 Improve better-jumper integration into ivy
And remove unnecessary set-jump on imenu-after-jump-hook (it should
happen before the jump, not after).
2019-05-19 02:18:26 -04:00
c4a5a1b007 Remove redundant +ivy--switch-buffer transformer
Mentioned in #1408
2019-05-14 10:12:37 -04:00
2fa2639d64 Add value column to {describe,helpful}-variable 2019-05-14 10:06:36 -04:00
9cdd5b2f99 Fixes for ivy-switch-buffer icons
Corrects the ivy-switch-buffer transformer to use buffer icons (not file
icons), and fixes alignment issues in the icon display.
2019-04-27 00:14:53 +10:00
1911f44e66 completion/ivy: add +icons flag
This replaces +ivy-buffer-icons.

Renders #1362 unnecessary.
2019-04-25 22:20:31 -04:00
a4c5396558 Add better-jumper
Replaces evil's jumplist; makes its functionality available for non evil
users.
2019-04-24 18:16:04 -04:00
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
7e7d6ae5a2 Fix hydra-ivy keybind on M-o #1342 2019-04-20 02:18:49 -04:00
e3cd82016e Disable fuzzy-matching for swiper-isearch 2019-04-16 11:07:06 +10:00
3ef2abfb22 Improve ivy-switch-buffer transformer
- Highlights remote/tramp files with ivy-remote face
- Highlights non-file-visiting buffers with ivy-subdir face
- Highlight modified buffers with ivy-modified-buffer face
- Disable built-in ivy-switch-buffer transformer (redundant with our own
  transformer)
2019-04-10 19:24:17 -04:00
f9b6f6746f General, minor refactor/reformatting 2019-04-08 23:03:19 -04:00
00bb00649b Fix #1065: add +ivy-buffer-unreal-face option 2019-04-07 15:55:45 -04:00
2514b7476e completion/ivy: refactor transformers
- Mode icons will now fall back to fundamental-mode icon, rather than
  the blank file icon (whose irregular width ruins ivy's formatting)
- Fixes project-based buffer name highlighting in switch-to-buffer
- Fixes a void-variable ivy-rich--ivy-switch-buffer-transformer error

Relevant to #1159
2019-04-06 01:37:11 -04:00
72fb5603e7 Minor, general refactor & reformatting
Also swaps C-o and M-o in ivy

And use new ;;;###package cookie (not used yet)
2019-04-06 01:36:46 -04:00
53e0ebb700 Merge pull request #1050 from rschmukler/rschmukler/fix-ivy-buffer-icons
fix: restore +ivy-buffer-icons config var
2019-04-06 00:14:58 -04:00
337c16cb68 Dear byte-compiler, you drive me to drink,
About Emacs Lisp that I have to rethink.
The world could end,
And humanity transcend,
But you'd still be here raising a stink.
2019-04-05 23:52:29 -04:00
49bbc7107f Disable fuzzy matching for counsel-rg #1292 2019-03-30 00:07:57 -04:00
60c965ded8 Revert restored revert of ee6e4a8b
Holy reverts Batman.
2019-03-14 00:31:59 -04:00
e50157bcec Restore reverted ee6e4a8b
Although Yevgnen/ivy-rich#51 was merged upstream, due to Melpa issues,
it hasn't been pulled. I'll restore this under it has.
2019-03-13 01:35:46 -04:00
cec93933d0 Revert ee6e4a8b
Fix was merged upstream: Yevgnen/ivy-rich#51
2019-03-09 04:38:22 -05:00
b6fcd59a01 completion/ivy: remap describe-bindings & set-variable 2019-03-09 03:42:55 -05:00
54d1c0dd56 Minor, general refactors 2019-03-09 03:42:55 -05:00
ee6e4a8b5c Fix ivy--queue-exhibit: void-function nil error
Until Yevgnen/ivy-rich#51 is merged
2019-03-08 17:58:58 -05:00
c7a29ca025 Add optional support for switch-buffer previews
When `+ivy-buffer-preview` is non-nil, our various switch-buffer
functions will preview the current candidate buffer, like how
`counsel-switch-buffer` works.

When `ivy-use-virtual-buffers` is non-nil, virtual buffers are *not*
previewed unless `+ivy-buffer-preview` is `'everything`.
2019-03-07 14:28:56 +10:00
cf07bac383 Fix persisted workspace storing broken posframes #1017
Not confident this is the best solution, but it will work for now.
2019-02-28 14:19:05 -05:00
faa4367636 Improved switch-to-buffer-other-window for ivy 2019-02-25 22:29:41 +10:00
861856df8d fix: restore +ivy-buffer-icons config var
This commit restores the functionality of the `+ivy-buffer-icons`
variable. I tested it in both childframe and regular mode.
2019-02-22 16:56:18 -05:00
d7308799f6 Remove -z flag from ag/rg commands
No guarantee the user has the associated decompression libraries
installed. I'll implement feature detection for these later.
2019-02-21 19:13:35 -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
c2392039f0 counsel-describe-face -> counsel-faces
counsel-faces displays useful information alongside each face.
2018-10-29 02:31:51 -04:00
ae99f52b99 completion/ivy: re-enable counsel-projectile
See ddf107a.
2018-10-19 17:46:30 -04:00