Commit Graph

200 Commits

Author SHA1 Message Date
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
4a9a2c00d9
Remove smex-completion-read reference
Doom no longer uses smex.
2018-09-26 12:29:55 -04:00
Henrik Lissner
b53b300657
Don't affect ivy-switch-buffer's transformer
ivy-rich already does this under the hood. This is redundant.
2018-09-23 16:30:43 -04:00
Henrik Lissner
f415762e8b
completion/ivy: fix ivy-rich integration 2018-09-19 23:34:00 -04:00
Henrik Lissner
2d685d736e
completion/ivy: fix +helm--get-command references
Bad copypasta!
2018-09-09 13:44:12 -04:00
Henrik Lissner
86d51dd056
Add +doom-dashboard-mode to swiper-font-lock-exclude
It breaks the dashboard
2018-09-09 09:58:22 -04:00
Henrik Lissner
22a94fc41a
Make helm/ivy project search api more consistent
+{helm,ivy}/*-from-cwd no longer accepts a third DIRECTORY argument.
2018-09-09 09:58:21 -04:00
Henrik Lissner
4d10c28c37
Change doom-ansi-apply, print! & format!
Color let-functions no longer take format string arguments. e.g.

  (format! (red "Hello %s" "world"))

Becomes

  (format! (red "Hello %s") "world")

The same goes for print!. Also, doom-ansi-apply now takes two arguments
instead of three.

Also merges doom-message-{fg,bg,fx} into doom-ansi-alist, and reduces
backtrace noise when errors originate from inside these macros.
2018-09-09 09:58:20 -04: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
Ben Johnson
eed835b7cc
Fix typo in ivy/README.org
Wrong command was listed in the table
2018-08-27 22:49:57 -07:00
Henrik Lissner
7a578eb242
Move counsel+helpful integration to ivy module 2018-08-17 03:37:07 +02:00
Henrik Lissner
7d1246888b
Only set display function for counsel-ag
counsel-rg and counsel-pt both identify themselves as counsel-ag, so
these extra specifications were unnecessary.
2018-08-15 21:19:59 +02:00
Henrik Lissner
77408ff12f
Refactor ivy project search API
The same as 7d617f15, but for ivy:

+ Heavily refactored +ivy-file-search
+ Removed -z flag from all engines by default
+ Changed the behavior of the universal argument for from-cwd
  interactive commands (e.g. +ivy/rg-from-cwd). It used to enable
  recursive searches, but now enables inclusion of hidden and compressed
  files in the search instead. *-from-cwd searches are always recursive
  now.
+ Now generates +ivy/X and +ivy/X-from-cwd commands dynamically.
+ Split +ivy/project-search into +ivy/project-search-from-cwd.
  Universal arguments are passed from these commands to their delegated
  engine command.
2018-08-13 21:47:56 +02:00
Henrik Lissner
ddf107a507
Disable counsel-projectile temporarily #93
Until upstream resolves ericdanan/counsel-projectile#93
2018-08-11 01:59:37 +02:00
Henrik Lissner
87c8f6e18e
Temporary fix for counsel-projectile arrayp error
This should be reversed once the issue is fixed upstream.

Addresses #792
2018-08-09 13:00:11 +02:00
Henrik Lissner
685f282b53
completion/ivy: nudge posframe up some
It was too far down on smaller displays
2018-08-07 14:43:27 +02:00
Henrik Lissner
9a3e71731c
completion/ivy: bring back flx 2018-08-04 13:47:19 +02:00
Henrik Lissner
e916a4d6fe
Remove ivy-prescient
Doesn't bring enough to the table, slows down fuzzy searches too much,
and alters the way ivy highlights.
2018-08-04 02:42:32 +02:00
Henrik Lissner
41a641f53b
Disable counsel-projectile-find-file transformer 2018-08-04 02:30:26 +02:00
Henrik Lissner
c878314aa6
Refactor +ivy/projectile-find-file to use counsel
counsel-projectile-find-file has other capabilities (like actions and
sorting). So we conditionally use projectile-find-file only if the
project is large enough to warrant it.
2018-08-04 02:28:45 +02:00
Henrik Lissner
1f1f2c3ebf
completion/ivy: fix ivy--regex-fuzzy typos 2018-08-03 21:57:47 +02:00
Henrik Lissner
35b88a597b
Activate ivy-prescient-mode on ivy-mode 2018-08-03 21:40:54 +02:00
Henrik Lissner
ab4052b8dc
Refactor completion/ivy & optimize projectile-find-file
counsel-projectile-find-file fontifies visited files and sorts the
resulting file list from projectile-find-file, adding considerable
overhead. Then, ivy-prescient performs a frecency sort and filter,
adding more overhead.

Altogether, this makes projectile-find-file unusable for larger projects
when fuzzy search is on (and in some extreme cases, when it's off). This
change disables both features specifically for projectile-find-file.

Fixes #774, hopefully
2018-08-03 16:35:42 +02:00
Henrik Lissner
3673067736
Fix projectile-find-file locking up Emacs
This occurs when invoking it from the root of massive file trees, like
$HOME or certain non-project folders. It's better that it defer to a
different command altogether (counsel-find-file) if invoked from $HOME,
and counsel-file-jump from anywhere else, which offers approximately
what we want, but at a fraction of the performance cost in those cases.
2018-08-03 16:10:20 +02:00
Henrik Lissner
0b8f3e29d5
Remove rg/pt ivy-re-builders-alist entries
Both counsel-(rg|pt) identify themselves as counsel-ag, so these extra
entries are necessary.
2018-08-02 03:51:15 +02:00
Henrik Lissner
baf400b736
completion/ivy: add ivy-prescient #774
Better fuzzy support versus flx; hopefully faster. Also brings frecency
sorting to ivy commands.
2018-08-02 01:53:29 +02:00
Henrik Lissner
59bc7653d5
completion/ivy: remove flx #774
flx is much too slow with large lists of candidates (i.e.
counsel-projectile-find-file).
2018-08-02 00:29:26 +02:00
Henrik Lissner
2f7f8f0868
+ivy/tasks: emit better error if project has no tasks 2018-07-29 19:31:32 +02:00
Henrik Lissner
c87c2bd5a6
Remove redundant magit-completing-read-function 2018-07-29 17:41:59 +02:00
Henrik Lissner
277915b28c
Fix order of +(helm|ivy)-project-search-engines 2018-07-24 14:18:44 +02:00
Henrik Lissner
e865526c75
Add +(helm|ivy)-project-search-engines variables
This allows you to control what search engines for project-search
commands (bound to SPC / p) to try, and in what order. If you didn't
want to use ripgrep, for instance, remove 'rg from these variables, or
move it to the end of the list.
2018-07-23 00:06:47 +02:00
Henrik Lissner
4323886b1b
Use ivy fallback display function for swiper et co
As they don't work well with ivy-posframe.
2018-07-14 04:08:17 +02:00
Henrik Lissner
bb6e9b0a4f
Remove counsel-more-chars removal hacks
Fixes wrong-number-of-args error caused by new counsel-more-chars
implementation upstream.

These hacks removed the hard-coded minimum input length requirement for
counsel-ag and its ilk. The recent counsel update made those
requirements customizable through counsel-more-chars-alist.
2018-07-14 02:56:46 +02:00
Henrik Lissner
9f50ca01a0
Rename amx-save-file: smex-items -> amx-items 2018-07-12 16:45:57 +02:00
Henrik Lissner
eb79760c66
ivy-rich-switch-buffer-pad => ivy-rich-pad
To match upstream changes.

Reported by @sarg
2018-07-06 12:17:29 +02:00
Henrik Lissner
2d30d996c3
Refactor counsel-find-file actions
Conform them to naming conventions & only autoload the functions that
aren't used immediately.
2018-07-05 14:05:09 +02:00
fuxialexander
0df9bae16b don't override original actions 2018-07-05 00:38:41 +08:00
fuxialexander
a906b82788 add action for counsel-find-file 2018-07-04 23:59:18 +08:00
Henrik Lissner
4a213e07f8
Fix void-function ivy--matcher-desc
When invoking +ivy-coo-hydra/body

Reported by @fuxialexander
2018-06-27 20:31:56 +02:00
Henrik Lissner
af41e17355
Minor reformatting & docstring tweak 2018-06-26 01:48:15 +02:00
Henrik Lissner
017ba8d79c
Autoload defhydras & use new naming convention
Phasing out the +module@name convention for plain old
+module-name-hydra, which is more compatible with elisp reflection tools
like describe-function and such.

Also, Emacs starts up faster now. Tee hee.
2018-06-26 01:43:54 +02:00
Henrik Lissner
2f63c5fa47
Merge pull request #723 from fuxialexander/fix-ivy-fuzzy
Fix disable ivy fuzzy search in counsel-grep and swiper
2018-06-25 15:02:41 +02:00
Henrik Lissner
106062da0d
Fix ivy posframe
The display function was being set on ivy-display-functions-props. The
correct variable for it is ivy-display-functions-alist.

Reported by randoom in discord.
2018-06-25 14:59:01 +02:00
fuxialexander
6a15db7e00 fix disable ivy fuzzy in swiper and counsel-grep 2018-06-25 14:15:00 +08:00
Henrik Lissner
f6dc6ac74e
Refactor out map.el usage
After some profiling, it turns out map-put and map-delete are 5-7x
slower (more on Emacs 25) than delq, setf/alist-get and add-to-list for
small lists (under 250 items), which is exactly how I've been using
them.

The only caveat is alist-get's signature is different on Emacs 25, thus
a polyfill is necessary in core-lib.
2018-06-23 19:53:54 +02:00
Henrik Lissner
d7f8a9591e
completion/ivy: replace smex with amx
Faster and maintained.
2018-06-20 18:39:44 +02:00
Henrik Lissner
d5bb770ea6
Make +(helm|ivy)-file-search public and autoloaded
So it can be safely used anywhere. Maybe these should be defgenerics?
2018-06-20 18:39:08 +02:00
Henrik Lissner
6808c46b58
💥 Change set-popup-rule! usage
Now accepts a flat plist of all its former parameters, including new
:parameters and :actions properties to increase your control over the
fate of your windows.

The old usage of set-popup-rule! is deprecated and may not work right!

The :ui popup module has also seen a major refactor to improve
efficiency and load times.

Sorry! This is the last "big" change before 2.1!
2018-06-18 02:34:16 +02:00
Henrik Lissner
d8b1e469bc
Introduce autodefs to replace some settings
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!

I am slowly phasing out the setting system (def-setting! and set!),
starting with these.

What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.

The old set! function will still work, for a while.
2018-06-15 03:42:01 +02:00
Henrik Lissner
d24807cc2c
Don't overwrite ivy-height for ivy-posframe
This would undo user's customizations to this variable.
2018-06-05 12:04:43 +02:00