]> code.delx.au - gnu-emacs-elpa/log
gnu-emacs-elpa
8 years agoivy.el (ivy-alt-done): Ensure the trailing slash for directories
Oleh Krehel [Tue, 10 Nov 2015 07:17:34 +0000 (08:17 +0100)]
ivy.el (ivy-alt-done): Ensure the trailing slash for directories

* ivy.el (ivy-alt-done): Update.

8 years agocounsel.el (counsel-M-x): Show current-prefix-arg in the prompt
Oleh Krehel [Fri, 6 Nov 2015 19:35:49 +0000 (20:35 +0100)]
counsel.el (counsel-M-x): Show current-prefix-arg in the prompt

* counsel.el (counsel--M-x-prompt): New defun.
(counsel-M-x): Update.

Fixes #287

8 years agodoc/ivy.org: Start writing a manual
Oleh Krehel [Fri, 6 Nov 2015 15:34:55 +0000 (16:34 +0100)]
doc/ivy.org: Start writing a manual

8 years agoFix directory validity check
Stephen Whipple [Thu, 5 Nov 2015 14:07:59 +0000 (07:07 -0700)]
Fix directory validity check

Directory validity check should be based on `ivy-text` and
`ivy--directory` rather than only `ivy-text`.

Fixes #283
Fixes #284

8 years agoAdd a better ivy-occur pulse to swiper and counsel-git-grep
Oleh Krehel [Thu, 5 Nov 2015 13:42:36 +0000 (14:42 +0100)]
Add a better ivy-occur pulse to swiper and counsel-git-grep

* ivy.el (ivy-occur-press): Bind `ivy-exit' to 'done, so that
  `swiper--add-overlays' called by ACTION don't do anything.
  Call another `swiper--add-overlays' for swiper and counsel-git-grep,
  limited to the current line. Call `swiper--cleanup' with a delay of 1
  second.

8 years agoswiper.el (swiper--add-overlays): Take extra WND arg
Oleh Krehel [Thu, 5 Nov 2015 13:41:24 +0000 (14:41 +0100)]
swiper.el (swiper--add-overlays): Take extra WND arg

8 years agocounsel.el (counsel-git-grep-query-replace): Should exit minibuffer
Oleh Krehel [Thu, 5 Nov 2015 12:48:04 +0000 (13:48 +0100)]
counsel.el (counsel-git-grep-query-replace): Should exit minibuffer

8 years agoInput "/sudo::" goes to current directory instead of root's home
Oleh Krehel [Thu, 5 Nov 2015 10:05:20 +0000 (11:05 +0100)]
Input "/sudo::" goes to current directory instead of root's home

* ivy.el (ivy-alt-done): Update.

Re #283

8 years agoFix /ssh: and /sudo:: broken in 71695df
Oleh Krehel [Thu, 5 Nov 2015 09:56:57 +0000 (10:56 +0100)]
Fix /ssh: and /sudo:: broken in 71695df

* ivy.el (ivy-alt-done): `file-directory-p' errors when given "/ssh:" or
  "/sudo::".

Re #283

8 years agoRebind ivy-occur to "C-c C-o" and "C-o u"
Oleh Krehel [Thu, 5 Nov 2015 07:35:00 +0000 (08:35 +0100)]
Rebind ivy-occur to "C-c C-o" and "C-o u"

* ivy.el (ivy-minibuffer-map): Update.

* ivy-hydra.el (hydra-ivy): Update.

Wouldn't want to violate the "C-c LETTER" convention.

8 years agocounsel.el (counsel-M-x): Add "definition" action
Oleh Krehel [Wed, 4 Nov 2015 18:47:50 +0000 (19:47 +0100)]
counsel.el (counsel-M-x): Add "definition" action

8 years agoivy.el (ivy-occur-press): Extend with-ivy-window
Oleh Krehel [Wed, 4 Nov 2015 18:10:09 +0000 (19:10 +0100)]
ivy.el (ivy-occur-press): Extend with-ivy-window

ivy-occur-action should be called in (ivy--get-window ivy-last).

This means, for purposes of e.g. `counsel-find-symbol' or
`lispy--action-jump` that if *ivy-occur* is the only window, it will be
re-used.
But if the user wants *ivy-occur* not to get buried, then having at
least 2 windows solves that problem.

8 years agoivy.el (ivy-minibuffer-map): Bind "C-M-a" to ivy-read-action
Oleh Krehel [Wed, 4 Nov 2015 18:09:44 +0000 (19:09 +0100)]
ivy.el (ivy-minibuffer-map): Bind "C-M-a" to ivy-read-action

8 years agocounsel.el (counsel-rhythmbox): Add :caller
Oleh Krehel [Wed, 4 Nov 2015 18:06:42 +0000 (19:06 +0100)]
counsel.el (counsel-rhythmbox): Add :caller

This results in more descriptive *ivy-occur* buffers.

8 years agoivy.el (ivy-occur-press): Work with counsel-rhythmbox
Oleh Krehel [Wed, 4 Nov 2015 17:41:57 +0000 (18:41 +0100)]
ivy.el (ivy-occur-press): Work with counsel-rhythmbox

> (cdr (assoc str coll))

Special behavior for `counsel-rhythmbox'.  Maybe not taking `cdr' is the
 right thing, but that's how Helm and `helm-rhythmbox-play-song' works.

8 years agofix 1-too-far scrolling issue
mike [Wed, 4 Nov 2015 15:08:51 +0000 (10:08 -0500)]
fix 1-too-far scrolling issue

Functions `ivy-scroll-up-command' and `ivy-scroll-down-command' would
scroll 1 unit too far. So one item in the list would be skipped
and never seen for each scroll.

8 years agoPulse after ivy-occur-press
Oleh Krehel [Wed, 4 Nov 2015 11:51:04 +0000 (12:51 +0100)]
Pulse after ivy-occur-press

* ivy.el (ivy-state): New field TEXT.
(ivy-occur): Add `ivy-text' to the name of the buffer. Also store
`ivy-text' in `ivy-occur-last'. Might be needed in the future for a more
specific pulse.
(ivy-occur-press): Pulse the selected line.

8 years agoMake ivy work with enable-recursive-minibuffers
Oleh Krehel [Tue, 3 Nov 2015 15:12:06 +0000 (16:12 +0100)]
Make ivy work with enable-recursive-minibuffers

* ivy.el (ivy-read): Fix the doc of DYNAMIC-COLLECTION.  Store the old
`ivy-last' in case `ivy-read' is called while inside the minibuffer.
Restore it after `ivy-call'.

8 years agoswiper.el (swiper-font-lock-ensure): Exclude debbugs-gnu-mode
Oleh Krehel [Tue, 3 Nov 2015 15:13:27 +0000 (16:13 +0100)]
swiper.el (swiper-font-lock-ensure): Exclude debbugs-gnu-mode

8 years agoivy.el (ivy-occur): Add and bind to "C-c o"
Oleh Krehel [Tue, 3 Nov 2015 10:43:47 +0000 (11:43 +0100)]
ivy.el (ivy-occur): Add and bind to "C-c o"

* ivy.el (ivy-minibuffer-map): Update.
(ivy-occur-action):
(ivy-occur-last):
(ivy-occur-map): New defvar.
(ivy-occur): New command.
(ivy-occur-click): New command bound to mouse click.
(ivy-occur-press): New command bound to "RET" press.

`ivy-occur' allows to store the current completion session for further
use. An unlimited amount of these sessions can be used, each in its own
buffer.

8 years agoivy.el (with-ivy-window): Ensure window is live
Oleh Krehel [Tue, 3 Nov 2015 10:42:41 +0000 (11:42 +0100)]
ivy.el (with-ivy-window): Ensure window is live

* ivy.el (ivy--get-window): New defun.

8 years agoivy.el (ivy-state): Add a new field BUFFER
Oleh Krehel [Tue, 3 Nov 2015 10:13:03 +0000 (11:13 +0100)]
ivy.el (ivy-state): Add a new field BUFFER

* ivy.el (ivy-resume): Update.
(ivy-read): Update.

* swiper.el (swiper--action): Use `ivy-state-buffer'.

8 years agoswiper.el (swiper-mc): Update
Oleh Krehel [Tue, 3 Nov 2015 10:10:21 +0000 (11:10 +0100)]
swiper.el (swiper-mc): Update

8 years agoHighlight modified file buffers with 'ivy-modified-buffer face
Oleh Krehel [Mon, 2 Nov 2015 14:12:26 +0000 (15:12 +0100)]
Highlight modified file buffers with 'ivy-modified-buffer face

* ivy.el (ivy-modified-buffer): New face, blank by default.
(ivy--format): When the collection is 'internal-complete-buffer,
highlight unsaved file visiting buffers with 'ivy-modified-buffer.

Fixes #280

Example custom setting for 'ivy-modified-buffer:

(custom-set-faces
 '(ivy-modified-buffer ((t (:background "#ff7777")))))

8 years agoivy.el (ffap): Move require
Oleh Krehel [Sun, 1 Nov 2015 12:21:38 +0000 (13:21 +0100)]
ivy.el (ffap): Move require

8 years agocounsel.el (counsel-git-grep-query-replace): Add and bind to "M-q"
Oleh Krehel [Sat, 31 Oct 2015 12:11:23 +0000 (13:11 +0100)]
counsel.el (counsel-git-grep-query-replace): Add and bind to "M-q"

* counsel.el (counsel-git-grep-map): Bind "M-q" to
  `counsel-git-grep-query-replace'.
(counsel-git-grep-query-replace): New command. Perform `query-replace'
on all matches of git-grep in all buffers.

8 years agoswiper.el (swiper-font-lock-ensure): Exclude eems-stream-mode
Oleh Krehel [Sat, 31 Oct 2015 11:05:42 +0000 (12:05 +0100)]
swiper.el (swiper-font-lock-ensure): Exclude eems-stream-mode

Re #19

8 years ago"C-x C-f M-n" can call ffap-url-fetcher when at URL
Oleh Krehel [Fri, 30 Oct 2015 14:00:30 +0000 (15:00 +0100)]
"C-x C-f M-n" can call ffap-url-fetcher when at URL

* ivy.el (ivy--cd-maybe): Check if the input is a valid URL.
If so, exit immediately by calling (funcall ffap-url-fetcher url).
Otherwise, do the usual `ivy--cd' thing.

8 years agoivy.el: "M-n" should prefer url at point to symbol at point
Oleh Krehel [Fri, 30 Oct 2015 13:54:24 +0000 (14:54 +0100)]
ivy.el: "M-n" should prefer url at point to symbol at point

* ivy.el (ivy--reset-state): Update.

8 years agocounsel.el (counsel--find-symbol): Resolve name clash better
Oleh Krehel [Fri, 30 Oct 2015 13:50:05 +0000 (14:50 +0100)]
counsel.el (counsel--find-symbol): Resolve name clash better

* counsel.el (counsel--find-symbol): When the symbol is both bound and
  fbound, prefer the fbound one, unless the :caller is
  `counsel-describe-variable'.
(counsel-describe-variable): Declare :caller.
(counsel-describe-function): Declare :caller.

One example is going to the definition of `isearch-forward' (also with
`counsel-M-x').

8 years agoImprove the preselect index in ivy-resume
Oleh Krehel [Fri, 30 Oct 2015 12:00:02 +0000 (13:00 +0100)]
Improve the preselect index in ivy-resume

* ivy.el (ivy--recompute-index): Don't change the ivy--index that was
  set in `ivy--reset-state' by `ivy-resume'.

With this, it's possible to e.g. "<f1> f", enter "for", navigate to
"format" and press "C-g". Calling `ivy-resume' will point to "format"
still.

8 years agoUse a specific blending method for dark themes
Oleh Krehel [Fri, 30 Oct 2015 11:21:25 +0000 (12:21 +0100)]
Use a specific blending method for dark themes

* colir.el (colir-blend): Use 'colir-compose-soft-light for dark themes.

Fixes #278

8 years agoRename and move the minibuffer faces
Oleh Krehel [Wed, 28 Oct 2015 12:38:45 +0000 (13:38 +0100)]
Rename and move the minibuffer faces

* swiper.el (swiper-minibuffer-match-face-1):
(swiper-minibuffer-match-face-2):
(swiper-minibuffer-match-face-3):
(swiper-minibuffer-match-face-4): Transform into obsolete aliases.

* ivy.el (ivy-minibuffer-match-face-1):
(ivy-minibuffer-match-face-2):
(ivy-minibuffer-match-face-3):
(ivy-minibuffer-match-face-4): New renamed faces.
(ivy-minibuffer-faces): Rename from `swiper-minibuffer-faces'.

Fixes #276

8 years agocounsel.el (counsel-git): Update default-directory
Oleh Krehel [Sat, 24 Oct 2015 17:10:37 +0000 (19:10 +0200)]
counsel.el (counsel-git): Update default-directory

8 years agoivy-immediate-done should use ivy--directory
Oleh Krehel [Fri, 23 Oct 2015 12:12:53 +0000 (14:12 +0200)]
ivy-immediate-done should use ivy--directory

* ivy.el (ivy-immediate-done): When completing file names, expand the
  file name properly.

Fixes #275

8 years agoswiper.el (swiper-font-lock-ensure): Amend exception list
Oleh Krehel [Fri, 23 Oct 2015 12:08:15 +0000 (14:08 +0200)]
swiper.el (swiper-font-lock-ensure): Amend exception list

Re #19

8 years agoivy.el (ivy-alt-done): Fix up last commit
Oleh Krehel [Thu, 22 Oct 2015 10:52:54 +0000 (12:52 +0200)]
ivy.el (ivy-alt-done): Fix up last commit

8 years ago"C-j" should not stop completion for a pasted file path
Oleh Krehel [Thu, 22 Oct 2015 10:27:37 +0000 (12:27 +0200)]
"C-j" should not stop completion for a pasted file path

* ivy.el (ivy-alt-done): If you paste a file path, it won't match
  anything in the current directory. Previously, "C-j" would open dired
  for that path. Now, "C-j" will switch to the pasted directory and
  continue completion.

This behavior conforms to `ido-find-file'.

8 years agoFix pasting file paths on Windows
Oleh Krehel [Thu, 22 Oct 2015 10:20:35 +0000 (12:20 +0200)]
Fix pasting file paths on Windows

* ivy.el (ivy--exhibit): Update.

Fixes #272

8 years agoFix Custom menus
Stephen Whipple [Thu, 22 Oct 2015 02:36:21 +0000 (20:36 -0600)]
Fix Custom menus

Custom menus for `ivy-virtual-abbreviate' and `ivy-sort-functions-alist'
now display a better user interface.

Fixes #274

8 years agoAdd a test for the perfect match logic
Oleh Krehel [Tue, 20 Oct 2015 13:05:22 +0000 (15:05 +0200)]
Add a test for the perfect match logic

Re #270

8 years agoBring back the lost perfect match logic
Oleh Krehel [Tue, 20 Oct 2015 13:01:20 +0000 (15:01 +0200)]
Bring back the lost perfect match logic

* ivy.el (ivy--recompute-index): Don't defer the perfect match logic to
  `ivy-index-functions-alist'.
(ivy-recompute-index-swiper): Simplify.

Once again, if the minibuffer text becomes `equal' to one of the
candidates, that candidate will be selected.

Fixes #270

8 years agoivy.el (ivy-resume): Pass caller
Oleh Krehel [Tue, 20 Oct 2015 07:01:49 +0000 (09:01 +0200)]
ivy.el (ivy-resume): Pass caller

Fixes #245

8 years agoivy.el (ivy-partial): Fix for fuzzy completion
Oleh Krehel [Mon, 19 Oct 2015 10:38:13 +0000 (12:38 +0200)]
ivy.el (ivy-partial): Fix for fuzzy completion

Postfix doesn't always work if the completion is fuzzy, so check if
`string-match' succeeds.

Fixes #266

8 years agoFix the count in user-specified counsel-git-grep
Oleh Krehel [Mon, 19 Oct 2015 10:24:15 +0000 (12:24 +0200)]
Fix the count in user-specified counsel-git-grep

* counsel.el (counsel--gg-count): Generate the count command from
`counsel-git-grep-cmd' by replacing "--full-name" with "-c".

Re #244

8 years agoivy.el (ivy-sort-functions-alist): Upgrade to defcustom
Oleh Krehel [Sun, 18 Oct 2015 16:13:41 +0000 (18:13 +0200)]
ivy.el (ivy-sort-functions-alist): Upgrade to defcustom

Add the proper :type.

8 years agoivy.el (ivy-extra-directories): Improve :type
Oleh Krehel [Sat, 17 Oct 2015 13:52:52 +0000 (15:52 +0200)]
ivy.el (ivy-extra-directories): Improve :type

8 years agocounsel.el (counsel-ag): Add initial-directory
Jon Miller [Sat, 17 Oct 2015 04:25:48 +0000 (21:25 -0700)]
counsel.el (counsel-ag): Add initial-directory

Support alternative initial directory which helps other packages call
this function with their unique starting directory.

8 years agoDon't re-anchor to matching old candidate if flx is on
Oleh Krehel [Fri, 16 Oct 2015 08:43:29 +0000 (10:43 +0200)]
Don't re-anchor to matching old candidate if flx is on

* ivy.el (ivy--recompute-index): If `flx' is in position to select the
  "best" candidate, don't re-anchor to the still-matching previous
  candidate.

Fixes #263

8 years agoAdd feedback for long-running async processes
Oleh Krehel [Thu, 15 Oct 2015 13:28:38 +0000 (15:28 +0200)]
Add feedback for long-running async processes

* counsel.el (counsel--async-time): New defvar.
(counsel--async-filter): New defun.
(counsel--async-command): Use `counsel--async-filter'.

Each time 0.5s pass after the last input, if the external process hasn't
finished yet, update minibuffer with the amount of candidates collected
so far. This is useful to see that long running commands like
`counsel-locate' or `counsel-ag' (when in a very large directory) aren't
stuck.

8 years agoivy-test.el (swiper--re-builder): Update
Oleh Krehel [Wed, 14 Oct 2015 18:24:25 +0000 (20:24 +0200)]
ivy-test.el (swiper--re-builder): Update

Due to last commit

8 years agoswiper.el (swiper--re-builder): Fix "^a" -> "^" case
Oleh Krehel [Wed, 14 Oct 2015 17:14:05 +0000 (19:14 +0200)]
swiper.el (swiper--re-builder): Fix "^a" -> "^" case

Fixes #262

8 years agoAdjust the swiper regexp builder for the display change
Oleh Krehel [Wed, 14 Oct 2015 16:35:03 +0000 (18:35 +0200)]
Adjust the swiper regexp builder for the display change

* swiper.el (swiper--re-builder): Update. The old re-builder was for
  when the line numbers were part of the candidates. Now the line
  numbers are the text properties of the candidates.

Fixes #262

8 years agoTry to fix the previous commit
Oleh Krehel [Wed, 14 Oct 2015 13:31:46 +0000 (15:31 +0200)]
Try to fix the previous commit

* ivy.el (ivy--exhibit): Update.

Sometimes the cursor randomly moves to the start of the read-only prompt
and it's impossible to move it.

8 years agoFix "C-x h" selection and "C-b" bug
Oleh Krehel [Wed, 14 Oct 2015 12:55:02 +0000 (14:55 +0200)]
Fix "C-x h" selection and "C-b" bug

* ivy.el (ivy--exhibit): Add another `constrain-to-field'.

This ensures that the point doesn't cross into the prompt text.
Previously, there was a bug that pressing "C-b" once more when already
at the start of the input set `ivy-text' to "", i.e. ignoring the
minibuffer input.

8 years agoFix window selection in counsel-locate
Oleh Krehel [Wed, 14 Oct 2015 09:11:24 +0000 (11:11 +0200)]
Fix window selection in counsel-locate

* counsel.el (counsel-locate): Use `with-ivy-window'.

8 years agoswiper.el (swiper-mc): Add and bind to "C-7"
Oleh Krehel [Wed, 14 Oct 2015 09:01:11 +0000 (11:01 +0200)]
swiper.el (swiper-mc): Add and bind to "C-7"

* swiper.el (swiper-map): Update.
(swiper-mc): New command.
(swiper--ivy): Use :action.
(swiper--action): Update arglist.

8 years agoivy.el (ivy-case-fold-search): New defvar
Oleh Krehel [Sat, 10 Oct 2015 11:09:24 +0000 (13:09 +0200)]
ivy.el (ivy-case-fold-search): New defvar

* ivy.el (ivy--reset-state): Set `ivy-case-fold-search' to 'auto.
(ivy-toggle-case-fold): New command.
(ivy--filter): Use `ivy-case-fold-search' to determine `case-fold-search'.

* ivy-hydra.el (hydra-ivy): Bind "C" to `ivy-toggle-case-fold'.

Fixes #259

8 years agoivy-count-format must be an empty string instead of nil
Oleh Krehel [Sat, 10 Oct 2015 10:31:08 +0000 (12:31 +0200)]
ivy-count-format must be an empty string instead of nil

Using an empty string is easier. No longer needed to check for nil when
using `string-match', `concat' etc.

* doc/Changelog.org: Update.

* ivy.el (ivy-count-format): Update doc and customize type.
(ivy--reset-state): Error if `ivy-count-format' nil is encountered.

Fixes #257
Re  #188

8 years agoFix the count when git-grep for "->foo"
Oleh Krehel [Fri, 9 Oct 2015 11:03:12 +0000 (13:03 +0200)]
Fix the count when git-grep for "->foo"

* counsel.el: For some reason, "-" gets interpreted in a bad way.
Escaping it as "\-" makes it work fine.

8 years agoivy.el (ivy--recompute-index): Fixup
Oleh Krehel [Fri, 9 Oct 2015 08:53:09 +0000 (10:53 +0200)]
ivy.el (ivy--recompute-index): Fixup

Fixes #258

8 years agoDon't reset the match to first if the current one still works
Oleh Krehel [Fri, 9 Oct 2015 08:44:11 +0000 (10:44 +0200)]
Don't reset the match to first if the current one still works

* ivy.el (ivy--recompute-index): If the old match is still located in
  the current matches after the change in input, keep it selected.

* ivy-test.el (ivy-read): Add test.

Fixes #258

8 years agoivy.el (ivy-virtual-abbreviate): New defcustom
Oleh Krehel [Fri, 9 Oct 2015 08:35:31 +0000 (10:35 +0200)]
ivy.el (ivy-virtual-abbreviate): New defcustom

* ivy.el (ivy--virtual-buffers): Update.

Fixes #255

8 years agoivy-hydra.el (hydra-ivy): Make the docstring a rectangle
Oleh Krehel [Thu, 8 Oct 2015 13:06:13 +0000 (15:06 +0200)]
ivy-hydra.el (hydra-ivy): Make the docstring a rectangle

8 years agoMove setq ivy--index to ivy--recompute-index
Oleh Krehel [Thu, 8 Oct 2015 12:31:37 +0000 (14:31 +0200)]
Move setq ivy--index to ivy--recompute-index

* ivy.el (ivy--recompute-index): Move the setq statement here, so that
  the customization functions have less internal variables to deal with.
(ivy-recompute-index-swiper): Update.
(ivy-recompute-index-zero): Update.

Re #253

8 years agoivy.el (ivy-index-functions-alist): New variable
Oleh Krehel [Thu, 8 Oct 2015 12:13:32 +0000 (14:13 +0200)]
ivy.el (ivy-index-functions-alist): New variable

* ivy.el (ivy-state): Add `caller' field.
(ivy-read): Add `caller' keyword arg; update docstring. Use
`ivy--recompute-index'.
(ivy--recompute-index): New defun, dispatch according to `caller' and
`ivy-index-functions-alist'.
(ivy-recompute-index-swiper): New defun.
(ivy-recompute-index-zero): New defun.

Fixes #253

8 years agoswiper.el: Add a lot of avy declares
Oleh Krehel [Thu, 8 Oct 2015 11:38:36 +0000 (13:38 +0200)]
swiper.el: Add a lot of avy declares

8 years agoivy.el (ivy-dispatching-call): Add and bind to "C-M-o"
Oleh Krehel [Thu, 8 Oct 2015 11:34:54 +0000 (13:34 +0200)]
ivy.el (ivy-dispatching-call): Add and bind to "C-M-o"

* ivy.el (ivy-minibuffer-map): Update.
(ivy-read-action): New command.
(ivy-dispatching-done): Update.

* ivy-hydra.el (hydra-ivy): Bind `ivy-read-action' to "a".

Re #254

8 years agoFix preselect for input "^"
Oleh Krehel [Wed, 7 Oct 2015 14:07:41 +0000 (16:07 +0200)]
Fix preselect for input "^"

* ivy.el (ivy--filter): Update.

Notably, e.g. `counsel-describe-variable' should properly preselect
variable at point.

8 years agoivy.el (ivy-last): Update docstring
Oleh Krehel [Wed, 7 Oct 2015 14:07:21 +0000 (16:07 +0200)]
ivy.el (ivy-last): Update docstring

8 years agoivy.el (ivy-use-virtual-buffers): Update docstring
Oleh Krehel [Wed, 7 Oct 2015 14:07:06 +0000 (16:07 +0200)]
ivy.el (ivy-use-virtual-buffers): Update docstring

8 years agoDefault ivy-display-style to 'fancy for Emacs>=24.5
Oleh Krehel [Wed, 7 Oct 2015 14:05:44 +0000 (16:05 +0200)]
Default ivy-display-style to 'fancy for Emacs>=24.5

* ivy.el (ivy-display-style): Update.

8 years agoivy.el (ivy-count-format): Extend customize choices
Oleh Krehel [Wed, 7 Oct 2015 14:04:55 +0000 (16:04 +0200)]
ivy.el (ivy-count-format): Extend customize choices

8 years agoFix ivy-state-preselect for file name completion
Oleh Krehel [Wed, 7 Oct 2015 12:14:35 +0000 (14:14 +0200)]
Fix ivy-state-preselect for file name completion

* ivy.el (ivy--preselect-index): Add a check for null preselect.
(ivy--filter): Use `ivy--preselect-index' instead of `cl-position'. The
reason is that the collection contains e.g "foo/" while the preselect is "foo".

8 years agoFix "M-o k" when switching buffers
Oleh Krehel [Wed, 7 Oct 2015 12:12:58 +0000 (14:12 +0200)]
Fix "M-o k" when switching buffers

* ivy.el (ivy-call): Check if (active-minibuffer-window) is non-nil
  before switching.

8 years agoAdjust ivy-state-preselect for file name completion
Oleh Krehel [Wed, 7 Oct 2015 11:31:13 +0000 (13:31 +0200)]
Adjust ivy-state-preselect for file name completion

* ivy.el (ivy--reset-state): Since `ivy--index' is now recomputed more,
  `ivy-state-preselect' needs to be in the collection properly, so that
  `ivy--index' is set to preselect whenever the input is empty.

8 years agoivy.el (ivy--filter): Fix typo
Oleh Krehel [Wed, 7 Oct 2015 10:08:04 +0000 (12:08 +0200)]
ivy.el (ivy--filter): Fix typo

Re #253

8 years agoivy.el (ivy--filter): Anchor only for swiper
Oleh Krehel [Tue, 6 Oct 2015 14:52:09 +0000 (16:52 +0200)]
ivy.el (ivy--filter): Anchor only for swiper

* ivy-test.el (ivy-read): Add tests. Except for `swiper', when the input
  changes `ivy-index' should usually be 0.

Fixes #231

8 years agoivy.el (ivy--insert-prompt): Use newlines instead of truncation
Oleh Krehel [Tue, 6 Oct 2015 13:29:27 +0000 (15:29 +0200)]
ivy.el (ivy--insert-prompt): Use newlines instead of truncation

When the prompt string is longer than window-width, insert newlines
appropriately so that the whole prompt fits in the window without
scrolling.  Finally, when prompt+entered text would be larger than
window-width, reformat the prompt so that entered text starts on a
newline.  When completing file names, move the whole path to a new line
in that case.

Fixes #252

8 years agoSupport hash tables in ivy-read
Oleh Krehel [Tue, 6 Oct 2015 09:30:55 +0000 (11:30 +0200)]
Support hash tables in ivy-read

* ivy.el (ivy--reset-state): `all-completions' also works fine for hash
  tables, so start using it.

Hash tables as collections are rare. One example is "C-c C-w"
in *rcirc* (`rcirc-cmd-whois').

8 years agoswiper.el (swiper-font-lock-ensure): Exclude help-mode
Oleh Krehel [Tue, 6 Oct 2015 06:50:19 +0000 (08:50 +0200)]
swiper.el (swiper-font-lock-ensure): Exclude help-mode

Fixes #248

8 years agoFix up visual-line-mode limitation logic
Oleh Krehel [Mon, 5 Oct 2015 16:46:08 +0000 (18:46 +0200)]
Fix up visual-line-mode limitation logic

* swiper.el (swiper-use-visual-line): New defvar.
(swiper--candidates):
(swiper--update-input-ivy):
(swiper--action): Update.

Re #227

8 years agoswiper.el (swiper--candidates): Avoid line-move for large buffers
Oleh Krehel [Sun, 4 Oct 2015 16:56:05 +0000 (18:56 +0200)]
swiper.el (swiper--candidates): Avoid line-move for large buffers

Re #227

8 years agoswiper-avy: show avy hints in minibuffer as well
PythonNut [Fri, 2 Oct 2015 19:03:01 +0000 (19:03 +0000)]
swiper-avy: show avy hints in minibuffer as well

8 years agoFix "End of buffer" for swiper and visual-line-mode
Oleh Krehel [Sat, 3 Oct 2015 17:38:32 +0000 (19:38 +0200)]
Fix "End of buffer" for swiper and visual-line-mode

Fixes #247

8 years agoCustomize ivy-avy and fix compile warnings
Oleh Krehel [Sat, 3 Oct 2015 07:59:39 +0000 (09:59 +0200)]
Customize ivy-avy and fix compile warnings

* ivy.el (ivy-avy): Require avy. Allow the user to customize `avy-keys',
  `avy-background' and `avy-style' (but prefer 'pre to 'at-full, since
  it doesn't obscure any letters).  Don't issue an extra `ivy-call'.

Fixes #246

8 years agoImplement ivy-avy
PythonNut [Fri, 2 Oct 2015 18:58:34 +0000 (18:58 +0000)]
Implement ivy-avy

8 years agocounsel.el (counsel--gg-count): Fix for "'" in query
Oleh Krehel [Fri, 2 Oct 2015 14:18:43 +0000 (16:18 +0200)]
counsel.el (counsel--gg-count): Fix for "'" in query

Since "'" is used for quoting in bash, it needs to be replaced with "''" .

8 years agoUse forward-line instead of line-move if possible
Oleh Krehel [Fri, 2 Oct 2015 13:33:07 +0000 (15:33 +0200)]
Use forward-line instead of line-move if possible

* swiper.el (swiper--candidates):
(swiper--update-input-ivy):
(swiper--action): `line-move' is much slower than `forward-line'. Use it
only if `visual-line-mode' is on.

8 years agocounsel.el (counsel--gg-candidates): Use counsel-git-grep-cmd
Oleh Krehel [Fri, 2 Oct 2015 13:06:11 +0000 (15:06 +0200)]
counsel.el (counsel--gg-candidates): Use counsel-git-grep-cmd

8 years agoFix counsel-git-grep not updating to 0 candidates
Oleh Krehel [Fri, 2 Oct 2015 12:22:27 +0000 (14:22 +0200)]
Fix counsel-git-grep not updating to 0 candidates

* counsel.el (counsel--gg-candidates): `ivy--all-candidates' should not
  be nil in order for `ivy--exhibit' to update the minibuffer.

8 years agoMake swiper compatible with visual-line-mode
Oleh Krehel [Fri, 2 Oct 2015 12:02:16 +0000 (14:02 +0200)]
Make swiper compatible with visual-line-mode

* swiper.el (swiper--candidates): Use `end-of-visual-line' and
  `line-move' appropriately.
(swiper--update-input-ivy):
(swiper--action): Use `line-move' instead of `forward-line'.
(swiper--add-overlays): Update.

Fixes #227

8 years agoivy.el (ivy-resume): Don't regexp-quote preselect
Oleh Krehel [Fri, 2 Oct 2015 11:48:09 +0000 (13:48 +0200)]
ivy.el (ivy-resume): Don't regexp-quote preselect

`ivy--preselect-index' uses `cl-position' before trying to match regex,
so the string needs to be as is.

Fixes #245

8 years agoivy-hydra.el: Bind "t" to toggle-truncate-lines
Oleh Krehel [Fri, 2 Oct 2015 10:30:54 +0000 (12:30 +0200)]
ivy-hydra.el: Bind "t" to toggle-truncate-lines

* ivy.el (ivy-format-function-default): When `truncate-lines' is non-nil
  don't truncate with "...".

Use "C-o t" when you complete very long lines and want to see them
whole.

Fixes #214

8 years agoivy.el (ivy--reset-state): Less strict on :preselect
Oleh Krehel [Fri, 2 Oct 2015 10:30:10 +0000 (12:30 +0200)]
ivy.el (ivy--reset-state): Less strict on :preselect

8 years agoSpecify shell command for counsel-git-grep with prefix arg
Oleh Krehel [Fri, 2 Oct 2015 09:40:15 +0000 (11:40 +0200)]
Specify shell command for counsel-git-grep with prefix arg

* counsel.el (counsel-git-grep-cmd): New defvar.
(counsel-git-grep-function): Use `counsel-git-grep-cmd'.
(counsel-git-grep-cmd-history): New defvar.
(counsel-git-grep): Update signature. When called with a prefix arg,
prompt for a command reading from and recording to
`counsel-git-grep-cmd-history'.

Remember to use "M-i" to insert the current candidate into the
minibuffer.

Fixes #244

8 years agoivy.el (ivy-yank-word): Add only one space each time
Oleh Krehel [Wed, 30 Sep 2015 14:37:14 +0000 (16:37 +0200)]
ivy.el (ivy-yank-word): Add only one space each time

The previous behavior got in trouble with consecutive spaces.

8 years agoivy.el (ivy--regex-fuzzy): Add minibuffer highlighting
Oleh Krehel [Wed, 30 Sep 2015 13:44:23 +0000 (15:44 +0200)]
ivy.el (ivy--regex-fuzzy): Add minibuffer highlighting

* ivy-test.el (ivy--regex-fuzzy): Update test.

Re #207

8 years agoAdd flx sorting
Oleh Krehel [Wed, 30 Sep 2015 13:26:41 +0000 (15:26 +0200)]
Add flx sorting

* ivy.el (ivy--flx-cache): New defvar.
(ivy--filter): Since flx is costly, move the caching to an earlier
point. This means immediate return for when the input hasn't changed,
i.e. for "C-n" or "C-p". When flx is installed, and
(eq ivy--regex-function 'ivy--regex-fuzzy) for current function (through
`ivy-re-builders-alist'), then sort the final candidates with
`ivy--flx-sort'.
(ivy--flx-sort): New defun. In the worst case when some error pops up return
the same list. In the best case sort the `cands' that all match `name'
by closeness to `name'.

How to use:
1. Have flx installed - (require 'flx) should succeed.
2. Configure `ivy-re-builders-alist' appropriately to use `ivy--regex-fuzzy', for example:

    (setq ivy-re-builders-alist
          '((t . ivy--regex-fuzzy)))

Fixes #207

8 years agoivy.el (ivy-call): "C-M-n" should not leave the minibuffer
Oleh Krehel [Wed, 30 Sep 2015 13:22:39 +0000 (15:22 +0200)]
ivy.el (ivy-call): "C-M-n" should not leave the minibuffer

Make sure that the minibuffer window remains selected as long as the
completion hasn't finished.
For example, "<f1> f" to call `counsel-describe-function' input
"forward" and spam "C-M-n" to read the doc for each function that starts
with "forward". The *Help* window popup would move the window focus, but
this change moves it back to the minibuffer.