Personal emacs config
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

5518 lines
146 KiB

2020-11-29 Oleh Krehel <ohwoeowho@gmail.com>
Rename swiper -> ivy
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
doc/ivy.org: Add "Variable Index" node
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
doc/ivy.texi: Re-export using adjusted texinfo exporter
* doc/ivy.org: Add defopt/endopt macros. Change `ivy-wrap' and
`ivy-height' to defopt.
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Bump version to 0.7.0
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
doc/Changelog.org: Update up to 706349f
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completing-read): Use completing-read-default for tmm
Fixes #316
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-tmm): New command
* counsel.el (counsel-tmm-prompt): New defun.
(tmm-km-list): Define this variable here, since `tmm-get-keymap'
modifies a global variable (yuck!).
Re #316
2015-12-07 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Add vc-dir-mode
Re #19
2015-12-04 Oleh Krehel <ohwoeowho@gmail.com>
Use :caller for ivy-re-builders-alist
* counsel.el (counsel-M-x): Add :caller.
* ivy.el (ivy--reset-state): Use :caller.
2015-12-04 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--update-input-ivy): Add a work-around for "M-j"
When `ivy-yank-word' is called, don't move to the line of the current
candidate. We're already there anyway. And not moving helps when there
are multiple occurrences of the current input on the current line.
Fixes #314
2015-12-02 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Structure all faces into ivy-faces custom group
2015-11-29 Oleh Krehel <ohwoeowho@gmail.com>
Fix due to visual-line-mode weirdness
* swiper.el (swiper--candidates): Under a specific random condition,
(line-move 1) from the beginning of line doesn't move to the beginning
of the next visual line.
This change fixes it, but will result in an even slower startup when
`visual-line-mode' is active.
Fixes #313
2015-11-29 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Use show-all if outline-show-all isn't there
Fixes #312
2015-11-29 Oleh Krehel <ohwoeowho@gmail.com>
Fix ivy-resume issue caused by the recursive calls change
* ivy.el (ivy-read): recursive-ivy-last is only set if there's an active
minibuffer window. If this check isn't made, it causes the previous
`ivy-last' to be reset after the current one, so `ivy-resume' would
resume not the last command.
2015-11-29 Oleh Krehel <ohwoeowho@gmail.com>
Fix the preselect for (swiper "one") again
* ivy.el (ivy--reset-state): Take into account :preselect being integer.
This means that it's void once the candidates are filtered over
:initial-input.
Fixes #292
2015-11-27 Oleh Krehel <ohwoeowho@gmail.com>
Fix the issue caused by recursive swiper calls
* swiper.el (swiper--ivy): Look at the return result of `ivy-read';
looking at `ivy-exit' no longer works.
Fixes #311
2015-11-27 Oleh Krehel <ohwoeowho@gmail.com>
Remove 'field text property for twittering-mode
* swiper.el (swiper--candidates): Update.
(swiper-font-lock-ensure): Add `twittering-mode'.
Fixes #310
2015-11-27 Oleh Krehel <ohwoeowho@gmail.com>
Enable recursive swiper calls
* ivy.el (ivy-read): Don't need to be in the minibuffer to do a
recursive store/restore.
(ivy--reset-state): Avoid nil string while testing.
Fixes #309
2015-11-27 Oleh Krehel <ohwoeowho@gmail.com>
doc/Changelog.org: Update up to 2bec99d
2015-11-27 Oleh Krehel <ohwoeowho@gmail.com>
Fixes on the previous docstring edits
2015-11-27 sjLambda <sjLambda@gmail.com>
Edit documentation strings in ivy.el
Fixes #308
2015-11-26 Oleh Krehel <ohwoeowho@gmail.com>
Ease production of functions like ivy-format-function-default
* ivy.el (ivy--format-function-generic): New defun.
(ivy-format-function-default):
(ivy-format-function-arrow):
(ivy-format-function-line): Use `ivy--format-function-generic'.
* counsel.el (counsel--M-x-transformer): Add an extra space to simplify
the logic.
Re #307
2015-11-26 Stephen Whipple <shw@wicdmedia.org>
Convert ivy formatting functions to dotted pairs.
`ivy-format-function' now expects to operate on dotted pairs
representing (stub . extra), where `stub' is the original candidate and
`extra' is any extra information that has been added by counsel or other
libraries.
The format function can differentiate between the original stub and
extra information and choose how to display the result to the user.
2015-11-25 Stephen Whipple <shw@wicdmedia.org>
Update ivy format functions.
`ivy-format-function' now accessible via Customize system.
`ivy-format-function-default' and `ivy-format-function-arrow'
simplified.
New format `ivy-format-function-line' added.
`counsel-M-x' restores `ivy-format-function' before executing command.
Fixes #306
2015-11-25 Oleh Krehel <ohwoeowho@gmail.com>
Add counsel-grep
* ivy.el (ivy--reset-state): Don't push preselect onto collection for
:dynamic-collection.
(ivy-recompute-index-swiper-async): New defun. It's useful for
re-anchoring on collections produced async processes. The major
difference from `ivy-recompute-index-swiper' is using `equal' instead of
`eq'.
* counsel.el (counsel--async-sentinel): Add index recomputing logic.
When `ivy--old-cands' are null, recompute the index according to
:preselect, otherwise try `ivy--recompute-index'.
(counsel-grep): New command. Very similar to `swiper', except calls an
external process for each key update. Should be much faster for very
large files, both for startup and for matching. For smaller files, it's
less convenient.
(counsel-grep-function): New defun.
(counsel-grep-action): New defun.
Fixes #299
2015-11-24 Oleh Krehel <ohwoeowho@gmail.com>
Ivy-resume should restore the buffer for swiper
* ivy.el (ivy-resume): Update.
Fixes #302
2015-11-24 Oleh Krehel <ohwoeowho@gmail.com>
Fix broken candidate index in ivy-resume
* ivy.el (ivy--reset-state): When given initial-input, call
`ivy--preselect-index' on candidates filtered by initial-input. This
is important for `ivy-resume'.
2015-11-24 Samuel Loury <konubinixweb@gmail.com>
Warn the user about the behavior of ivy--regex-ignore-order
Fixes #296 Fixes #305
2015-11-24 Oleh Krehel <ohwoeowho@gmail.com>
Minor fixes to ivy.org and export to ivy.texi
Fixes #304
2015-11-24 sjLambda <sjLambda@gmail.com>
ivy.org manual edits
2015-11-24 kovrik <kovrik0@gmail.com>
Fix `counsel-ag` on Windows
2015-11-22 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--action): push-mark only if exited the minibuffer
"C-M-n" and "C-M-p" will no longer push mark and annoy with messages.
2015-11-22 Oleh Krehel <ohwoeowho@gmail.com>
Perform string-match in the original buffer
* ivy.el (ivy--exhibit): Wrap in `with-current-buffer'
`ivy-state-buffer'.
(ivy-recompute-index-swiper): Reset to the candidate at the current line
number, in case the previous regex resulted in 0 candidates.
Fixes #298
2015-11-21 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--candidates): Require outline
Fixes #297
2015-11-20 Oleh Krehel <ohwoeowho@gmail.com>
Fix the preselect for (swiper "one")
* ivy.el (ivy--reset-state): Ignore INITIAL-INPUT on the first
step. Then all `ivy--filter' on the second step.
(ivy--preselect-index): Change arglist. No longer takes INITIAL-INPUT.
(ivy--recompute-index): Update the call to `ivy--preselect-index'.
Fixes #292
2015-11-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Split into smaller defuns
* ivy.el (ivy--directory-done): New defun.
(ivy-alt-done): Forward to `ivy--directory-done'.
2015-11-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Refactor
Collect all `ivy--directory' branches into a single `cond'.
2015-11-19 Oleh Krehel <ohwoeowho@gmail.com>
Allow access to TRAMP from "// C-j"
* ivy.el (ivy-alt-done): Match not only `ivy-text' but also
`ivy--current' for TRAMP regex.
Re #285
2015-11-18 Stephen Whipple <shw@wicdmedia.org>
Improve ivy TRAMP support
2015-11-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completing-read): Fix off by one
Re #295
2015-11-18 Oleh Krehel <ohwoeowho@gmail.com>
Switch to using ivy-exit-with-action
* ivy.el (ivy-exit-with-action): Add a missing quote.
(ivy--cd-maybe): Use `ivy-exit-with-action'.
* counsel.el (counsel-find-symbol):
(counsel--info-lookup-symbol):
(counsel-git-grep-query-replace): Use `ivy-exit-with-action'.
* swiper.el (swiper-query-replace):
(swiper-mc): Use `ivy-exit-with-action'.
The previous approach was overwriting the action list, so when
`ivy-resume' was called, only a single action was present. The new
approach doesn't have this bug.
So now it's possible to e.g. `counsel-describe-function' -> "M-o d" ->
`ivy-resume' -> "M-o o" -> `ivy-resume' -> "M-o i".
2015-11-18 Samuel Loury <konubinixweb@gmail.com>
Make ivy-completing-read handle history as cons
The ivy-read function assumes that history is a symbol, hence
ivy-completing-read now makes sure that a symbol is given to ivy-read.
Moreover, it makes sure that the value of initial-input is coherent with
the value of the HISTPOS part of the history variable if it exists.
Fixes #295
2015-11-17 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Modify the behavior with org-mode and visual-line-mode
* swiper.el (swiper--candidates): Set `swiper-use-visual-line' even for
`org-mode'. In that case, reveal all text to prevent `line-move'
weirdness.
(swiper--ivy): Use `swiper-use-visual-line'.
Re #291 Re #227
2015-11-16 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Add more bindings
2015-11-16 Oleh Krehel <ohwoeowho@gmail.com>
Add precise preselect for swiper with visual-line-mode
* swiper.el (swiper--ivy): Use `count-screen-lines' to calculate the
visual line number.
Fixes #291
2015-11-16 Oleh Krehel <ohwoeowho@gmail.com>
Intermediate fix for :preselect with visual-line-mode
* swiper.el (swiper--ivy): Use `beginning-of-visual-line' and
`end-of-visual-line'. This should fix the preselect problem for
non-duplicate buffer lines.
For duplicate buffer lines, a `visual-line-number-at-pos' function is
necessary. I don't currently know how to implement such a function in an
efficient way. The naive implementation could be pretty inefficient,
comparable to doubling `swiper' startup time with `visual-line-mode'.
Re #291
2015-11-15 Oleh Krehel <ohwoeowho@gmail.com>
Fix swiper preselect issue with similar or identical lines
* ivy.el (ivy--preselect-index): Allow PRESELECT to be an integer.
* swiper.el (swiper--anchor):
(swiper--len): Remove unused defvar.
(swiper--init): Update.
(swiper--ivy): Set PRESELECT to `line-number-at-pos'.
Fixes #290
2015-11-14 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-all): New command to swiper all file buffers
* swiper.el (swiper--candidates): Add NUMBERS-WIDTH arg. It could be
done better by calculating the line count of each buffer and then
getting the max of that, but this way is faster, since the collections
are traversed only once.
(swiper-multi): Update.
(swiper-all): New command. This is like `swiper-multi' where the buffer
list is pre-selected to be all file visiting buffers.
(swiper--multi-candidates): New defun.
(swiper-multi-action-1): Use `swiper--multi-candidates'.
(swiper-multi-action-2): Update - the line number is in the 'display
property of the first char.
Re #234
2015-11-14 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--candidates): Replace "\t" with " "
This will allow the minibuffer strings to align nicer for
`swiper-multi'.
2015-11-14 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--truncate-string): New defun
* ivy.el (ivy-format-function-default): Use `ivy--truncate-string'.
2015-11-14 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-locate): Add INTIAL-INPUT arg
Fixes #289
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--sort-files-by-date): Fix due to destructive cl-sort
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
Allow to sort files by last modification time.
* ivy.el (ivy--sort-files-by-date): New defun.
Example of use:
(add-to-list
'ivy-sort-matches-functions-alist
'(read-file-name-internal . ivy--sort-files-by-date))
This will result in e.g. `find-file' or `counsel-find-file' sorting
files by last modification time.
Fixes #213
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
Allow user-specified matched candidate sorting
* ivy.el (ivy-prefix-sort): Remove defcustom.
(ivy--filter): Forward sorting of matched candidates to `ivy--sort'.
(ivy-sort-matches-functions-alist): New defcustom.
(ivy--sort): New defun.
Fixes #269 Fixes #265
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-prefix-sort): New defcustom, off by default for now
* ivy.el (ivy--filter): When `ivy-prefix-sort' is non-nil, additionally
sort the matching candidates with `ivy--prefix-sort'.
(ivy--prefix-sort): New defun.
Fixes #265
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-sort-functions-alist): Update doc
Mention `ivy-sort-max-size'.
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Add support for evil-jumper/backward
* swiper.el (evil-jumper--set-jump): Declare.
(swiper--init): When `evil-jumper-mode' is on, call
`evil-jumper--set-jump'.
* ivy.el (counsel-git-grep-cmd): Declare to silence the byte compiler.
Fixes #268
2015-11-13 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Add eww-mode
2015-11-12 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Add occur-mode
2015-11-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-occur): Give full counsel-git-grep cands
This means that the " | head -n 200" speed-up isn't used and full
candidates are returned.
2015-11-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-occur-mode-map): Bind "q" to quit-window
2015-11-11 Oleh Krehel <ohwoeowho@gmail.com>
Allow counsel-git-grep -> ivy-occur -> wgrep
* ivy.el (ivy-exit-with-action): New defun.
(ivy-occur-action): Remove defvar. It's part of `ivy-occur-last' now.
(ivy-occur-last): Update doc.
(ivy-occur-map): Rename to `ivy-occur-mode-map'.
(ivy-occur-mode): New major mode.
(ivy-occur): When the caller is `counsel-git-grep', enter `grep-mode';
otherwise enter the new `ivy-occur-mode'. For `wgrep' to work, two
things are changed: candidates need to start on the 5th line, and
candidates need to be prefixed with "./".
(ivy-occur-read-action): New command, bound to "a".
(ivy-occur-dispatch): New command, bound to "o".
(ivy-occur-press): Update to work with `grep-mode'.
(ivy-occur-grep-mode-map): New defvar.
(ivy-occur-grep-mode): New major mode. Basically, it's grep-mode with
"C-x C-q" bound to `wgrep-change-to-wgrep-mode'.
2015-11-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-dispatching-done): Don't set action permanently
2015-11-11 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel--find-symbol): Silence byte compiler
2015-11-11 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-toggle-face-matching): Add and bind to "C-c C-f"
* swiper.el (swiper-map): Bind `swiper-toggle-face-matching' to
"C-c C-f".
(swiper-invocation-face): New defvar.
(swiper--ivy): Set `swiper-invocation-face'.
(swiper-toggle-face-matching): Toggle `ivy-state-matcher' between nil
(the initial value) and 'swiper--face-matcher.
(swiper--face-matcher): New defun. In addition to filtering CANDIDATES
by having them match REGEXP, also ensure that every match has
`swiper-invocation-face'.
Example of usage:
1. Move point to a variable with e.g. `font-lock-keyword-face' and "C-s"
<input>.
2. Use "C-c C-f" to filter the candidates further by selecting only the
ones that have `font-lock-keyword-face'. Note that "M-q"
(`swiper-query-replace') is also affected by the filtering.
3. Use "C-c C-f" to toggle the filtering off.
Fixes #288
2015-11-10 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Ensure the trailing slash for directories
* ivy.el (ivy-alt-done): Update.
2015-11-06 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-11-06 Oleh Krehel <ohwoeowho@gmail.com>
doc/ivy.org: Start writing a manual
2015-11-05 Stephen Whipple <shw@wicdmedia.org>
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
2015-11-05 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-11-05 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--add-overlays): Take extra WND arg
2015-11-05 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep-query-replace): Should exit minibuffer
2015-11-05 Oleh Krehel <ohwoeowho@gmail.com>
Input "/sudo::" goes to current directory instead of root's home
* ivy.el (ivy-alt-done): Update.
Re #283
2015-11-05 Oleh Krehel <ohwoeowho@gmail.com>
Fix /ssh: and /sudo:: broken in 71695df
* ivy.el (ivy-alt-done): `file-directory-p' errors when given "/ssh:" or
"/sudo::".
Re #283
2015-11-05 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-11-04 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Add "definition" action
2015-11-04 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-11-04 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-minibuffer-map): Bind "C-M-a" to ivy-read-action
2015-11-04 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-rhythmbox): Add :caller
This results in more descriptive *ivy-occur* buffers.
2015-11-04 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-11-04 mike <miketz@users.noreply.github.com>
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.
2015-11-04 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-11-03 Oleh Krehel <ohwoeowho@gmail.com>
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'.
2015-11-03 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude debbugs-gnu-mode
2015-11-03 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-11-03 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (with-ivy-window): Ensure window is live
* ivy.el (ivy--get-window): New defun.
2015-11-03 Oleh Krehel <ohwoeowho@gmail.com>
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'.
2015-11-03 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-mc): Update
2015-11-02 Oleh Krehel <ohwoeowho@gmail.com>
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")))))
2015-11-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ffap): Move require
2015-10-31 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-31 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude eems-stream-mode
Re #19
2015-10-30 Oleh Krehel <ohwoeowho@gmail.com>
"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.
2015-10-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: "M-n" should prefer url at point to symbol at point
* ivy.el (ivy--reset-state): Update.
2015-10-30 Oleh Krehel <ohwoeowho@gmail.com>
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').
2015-10-30 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-30 Oleh Krehel <ohwoeowho@gmail.com>
Use a specific blending method for dark themes
* colir.el (colir-blend): Use 'colir-compose-soft-light for dark themes.
Fixes #278
2015-10-28 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-24 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git): Update default-directory
2015-10-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy-immediate-done should use ivy--directory
* ivy.el (ivy-immediate-done): When completing file names, expand the
file name properly.
Fixes #275
2015-10-23 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Amend exception list
Re #19
2015-10-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Fix up last commit
2015-10-22 Oleh Krehel <ohwoeowho@gmail.com>
"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'.
2015-10-22 Oleh Krehel <ohwoeowho@gmail.com>
Fix pasting file paths on Windows
* ivy.el (ivy--exhibit): Update.
Fixes #272
2015-10-22 Stephen Whipple <shw@wicdmedia.org>
Fix Custom menus
Custom menus for `ivy-virtual-abbreviate' and `ivy-sort-functions-alist'
now display a better user interface.
Fixes #274
2015-10-20 Oleh Krehel <ohwoeowho@gmail.com>
Add a test for the perfect match logic
Re #270
2015-10-20 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-20 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-resume): Pass caller
Fixes #245
2015-10-19 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-19 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-sort-functions-alist): Upgrade to defcustom
Add the proper :type.
2015-10-17 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-extra-directories): Improve :type
2015-10-16 Jon Miller <jonEbird@gmail.com>
counsel.el (counsel-ag): Add initial-directory
Support alternative initial directory which helps other packages call
this function with their unique starting directory.
2015-10-16 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-15 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
ivy-test.el (swiper--re-builder): Update
Due to last commit
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--re-builder): Fix "^a" -> "^" case
Fixes #262
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
Fix window selection in counsel-locate
* counsel.el (counsel-locate): Use `with-ivy-window'.
2015-10-14 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-10 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-10 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-09 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-09 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--recompute-index): Fixup
Fixes #258
2015-10-09 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-09 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-virtual-abbreviate): New defcustom
* ivy.el (ivy--virtual-buffers): Update.
Fixes #255
2015-10-08 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el (hydra-ivy): Make the docstring a rectangle
2015-10-08 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-08 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-08 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Add a lot of avy declares
2015-10-08 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
Fix preselect for input "^"
* ivy.el (ivy--filter): Update.
Notably, e.g. `counsel-describe-variable' should properly preselect
variable at point.
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-last): Update docstring
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-use-virtual-buffers): Update docstring
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
Default ivy-display-style to 'fancy for Emacs>=24.5
* ivy.el (ivy-display-style): Update.
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-count-format): Extend customize choices
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
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".
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
Fix "M-o k" when switching buffers
* ivy.el (ivy-call): Check if (active-minibuffer-window) is non-nil
before switching.
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-07 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--filter): Fix typo
Re #253
2015-10-06 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-06 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-06 Oleh Krehel <ohwoeowho@gmail.com>
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').
2015-10-06 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude help-mode
Fixes #248
2015-10-05 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-04 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--candidates): Avoid line-move for large buffers
Re #227
2015-10-04 PythonNut <PythonNut@users.noreply.github.com>
swiper-avy: show avy hints in minibuffer as well
2015-10-03 Oleh Krehel <ohwoeowho@gmail.com>
Fix "End of buffer" for swiper and visual-line-mode
Fixes #247
2015-10-03 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-03 PythonNut <PythonNut@users.noreply.github.com>
Implement ivy-avy
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel--gg-count): Fix for "'" in query
Since "'" is used for quoting in bash, it needs to be replaced with "''"
.
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel--gg-candidates): Use counsel-git-grep-cmd
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--reset-state): Less strict on :preselect
2015-10-02 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-09-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-yank-word): Add only one space each time
The previous behavior got in trouble with consecutive spaces.
2015-09-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--regex-fuzzy): Add minibuffer highlighting
* ivy-test.el (ivy--regex-fuzzy): Update test.
Re #207
2015-09-30 Oleh Krehel <ohwoeowho@gmail.com>
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
2015-09-30 Oleh Krehel <ohwoeowho@gmail.com>
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.
2015-09-30 Oleh Krehel <ohwoeowho@gmail.com>
Improve "C-g" out of a long-running async process
* counsel.el (counsel-delete-process): New defun.
(counsel-locate):
(counsel-ag): Use `counsel-delete-process' as :unwind.
2015-09-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--insert-prompt): Improve truncation
Re #240
2015-09-29 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Don't rely on package-installed-p
* counsel.el (counsel-M-x): Use `require' instead. `package-installed-p'
may fail if package wasn't initialized.
2015-09-29 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-ag-function): Improve for fancy faces
Set `ivy--old-re' in order for fancy `ivy-display-style' to work.
2015-09-29 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel--find-symbol): Allow to jump back with pop-tag-mark
Using "C-." in:
- counsel-describe-function
- counsel-describe-variable
- counsel-load-library
will change the current buffer. The buffer and point can be restored
with "M-*" (`pop-tag-mark').
I also recommend this binding:
(global-set-key (kbd "M-,") 'pop-tag-mark)
2015-09-29 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Add mu4e
Re #19
2015-09-26 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--insert-prompt): Avoid negative length error
2015-09-26 Oleh Krehel <ohwoeowho@gmail.com>
Truncate minibuffer prompts longer than window-width
* ivy.el (ivy--insert-prompt): When the prompt string is longer than the
window width, truncate it to window width minus 26 chars.
Fixes #240
2015-09-26 Oleh Krehel <ohwoeowho@gmail.com>
Make ivy-display-style more compatible with 24.3
* ivy.el (ivy--format-minibuffer-line): Use
`font-lock-append-text-property' instead of
`add-face-text-property'. It's not optimal, since the new face needs
to be put in front, but at least it doesn't error out.
2015-09-26 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--resize-minibuffer-to-fit): Make compatible with 24.3
Fixes #220
2015-09-25 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--ivy): Remove obsolete version check
2015-09-22 Julien Wietrich <julien.w6h@gmail.com>
Fix minibuffer collapse in text mode emacs
In graphic mode : resize-mini-windows is temporarily set to nil, the
only value which does not collapse the minibuffer.
In text mode : if resize-mini-windows is nil, it is temporarily set to
'grow-only (default emacs value).
This prevent the minibuffer collapse in both graphic and text mode.
In text mode it respects the user settings if it is already set to
'grow-only or t.
Fix #237 in text mode emacs too.
2015-09-22 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--ivy): Use minibuffer-allow-text-properties
Using `minibuffer-allow-text-properties' makes Emacs not strip the text
properties from the result of `read-from-minibuffer'. This is better
because a function call result is used instead of a global var to pass
this info.
2015-09-19 Julien Wietrich <julien.w6h@gmail.com>
Revert multiple frames workaround
Since SHA:d8d7ed45f07b52ab63eca444f0e6fa03747fab9e workaround
SHA:435f2b6edfe3ab517c9eda56c6351f0bcfdf3845 is no longer required.
2015-09-19 Julien Wietrich <julien.w6h@gmail.com>
Fix minibuffer collapses to one line
It happens since commit SHA:d374afea36df19b5d6b654adc6018b25d6c1d8f2
when resize-mini-windows is set to true.
It also happens when resize-mini-windows is set to 'grow-only (default)
and multiple frames are open.
(Although SHA:435f2b6edfe3ab517c9eda56c6351f0bcfdf3845 work around it)
Temporarily bind `resize-mini-windows' to nil before calling
`read-from-minibuffer'.
Fix #237 and #229
It might fix #77 although this need to be checked as I cannot reproduce
it.
2015-09-18 PythonNut <PythonNut@users.noreply.github.com>
Add autoloads to some important functions
2015-09-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-switch-buffer): Make "M-o r" rename buffer
* ivy.el (ivy--rename-buffer-action): New defun.
Fixes #233
2015-09-18 Oleh Krehel <ohwoeowho@gmail.com>
Make "<left>" and "<right>" behave as in fundamental-mode
Fixes #232
2015-09-15 Oleh Krehel <ohwoeowho@gmail.com>
Add work-around for minibuffer not re-sizing for many frames
* ivy.el (ivy--minibuffer-setup): When `truncate-lines' is set, it works
fine for one graphic frame, but not for two (unknown why); add a
work-around.
Fixes #229
2015-09-13 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-yank-pop): Add autoload
2015-09-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-format-function-default): Fix boundp bug
Fixes #225
2015-09-12 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-yank-pop-truncate): Add group
2015-09-12 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--ivy): Fix compiler warning
2015-09-11 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-yank-pop): New command
* counsel.el (counsel-yank-pop-truncate): New defcustom. Choose whether
to truncate strings over 4 lines.
(counsel-yank-pop-action): New defun.
Fixes #218
2015-09-11 Oleh Krehel <ohwoeowho@gmail.com>
Make line numbers in swiper into display properties
* swiper.el (swiper--candidates): Each candidate is now a single space
plus the original string. The display property of the single space
holds the line number. This means that it's no longer possible to
match line numbers in queries. Also, the preselect of the current line
is slightly worse (in case there are two identical lines in a buffer).
(swiper--ivy): Update the preselect to not include the line number.
Also, call `ivy--action' on `ivy-current' instead of `res', because
`res' doesn't have the string property that points to the line number.
(swiper--update-input-ivy): Update.
(swiper--action): Update.
Fixes #224
2015-09-11 Oleh Krehel <ohwoeowho@gmail.com>
Set truncate-lines in the minibuffer
* ivy.el (ivy--minibuffer-setup): Update.
(ivy-format-function-default): Check `truncate-lines'. Check if
`fringe-mode' is bound.
Fixes #223
2015-09-10 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--resize-minibuffer-to-fit): Make compatible with 24.3
Re #220
2015-09-10 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-format-function-default): Handle fringe-mode 0
Fixes #219
2015-09-09 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-unicode-char): Add own history
Also make "C-M-n", "C-M-p", and `ivy-resume' work properly.
2015-09-08 Oleh Krehel <ohwoeowho@gmail.com>
Fix up the "foo ! bar" matching and highlighting
* ivy.el (ivy--filter): When regex returned is a list, use only the
first string part.
* swiper.el (swiper--update-input-ivy): When regex returned is a list,
use only the first string part.
2015-09-08 Oleh Krehel <ohwoeowho@gmail.com>
Move swiper-minibuffer-faces to ivy.el
Fixes #217
2015-09-07 Oleh Krehel <ohwoeowho@gmail.com>
Declare some SLIME functions
* counsel.el (slime-symbol-start-pos):
(slime-symbol-end-pos):
(slime-contextual-completions): Declare.
2015-09-07 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep-function): Fix up
Set `ivy--old-re' for the benefit of fancy minibuffer faces.
2015-09-07 Oleh Krehel <ohwoeowho@gmail.com>
Make the minibuffer faces look nicer
* ivy.el (ivy-current-match): Update background and add white
foreground for light themes. Update background and add black
foreground for dark themes.
(ivy--add-face): If a face has an explicit foreground, add it ahead,
with no blending. Blend the background as usual.
* swiper.el (swiper-minibuffer-match-face-1):
(swiper-minibuffer-match-face-2): Update the background for light
themes.
(swiper-minibuffer-match-face-4): Update the background for dark themes.
2015-09-06 Oleh Krehel <ohwoeowho@gmail.com>
Add default values for minibuffer faces
* swiper.el (swiper-minibuffer-match-face-1):
(swiper-minibuffer-match-face-2):
(swiper-minibuffer-match-face-3):
(swiper-minibuffer-match-face-4): Update.
Re #215
2015-09-04 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--format-minibuffer-line): Fix nil regexp
2015-09-04 Oleh Krehel <ohwoeowho@gmail.com>
Make ivy-current blend correctly for fancy minibuffer
* ivy.el (ivy--format-minibuffer-line): Stop setting :height - it messes
with blending. Also, the minibuffer height issue was fixed in an
earlier pull request.
(ivy--format): Call `ivy--add-face' on modified string, not on the
original one.
2015-09-04 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--format-minibuffer-line): Use add-face-text-property
2015-09-04 Oleh Krehel <ohwoeowho@gmail.com>
Add extra faces for minibuffer highlighting
* swiper.el (swiper-minibuffer-match-face-1):
(swiper-minibuffer-match-face-2):
(swiper-minibuffer-match-face-3):
(swiper-minibuffer-match-face-4): New defface.
(swiper-minibuffer-faces): New defvar.
* ivy.el (ivy--format-minibuffer-line): New defun.
(ivy--format): Use `ivy--format-minibuffer-line'.
2015-09-03 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-display-style): New defcustom
* ivy.el (ivy--format): Add additional highlighting for the minibuffer,
similar to `swiper', when `ivy-display-style' is set to 'fancy.
Fixes #212
2015-08-31 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-cl): New command
* counsel.el (counsel--el-action): Add `with-ivy-window' wrapper.
2015-08-25 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel--py-action): Work with "C-M-n"
* counsel.el (counsel--py-action): Include the inserted parens in to
bounds, so that "C-M-n", "C-M-p" and `ivy-resume' work.
2015-08-25 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-jedi): New command
* counsel.el (counsel--py-action): New defun.
Add a few declares as well.
2015-08-21 Oleh Krehel <ohwoeowho@gmail.com>
Add swiper-multi command
* swiper.el (swiper-multi-buffers): New defvar.
(swiper-multi-candidates): New defvar.
(swiper-multi-prompt): New defun.
(swiper-multi-action-1): New defun.
(swiper-multi-action-2): New defun.
Fixes #182.
Basic usage tips for selecting multiple buffers:
- Use "C-M-m" (`ivy-call') to add or remove one more buffer without
exiting.
- Use "C-m" (`ivy-done') to add one last buffer.
- Or use "C-M-j" (`ivy-immediate-done') to finish without adding more
buffers.
- Hold "C-M-n" (`ivy-next-line-and-call') to add a lot of buffers at
once.
2015-08-20 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-org-tag): Now works in agenda
* counsel.el (counsel-org--set-tags): New defun.
(counsel-org-tag-action): Update.
When on an agenda item, add/remove tags for that item.
When any agenda items are marked with "m", add selected tags to all
items, with no duplicates.
Fixed the bug of setting tags to "::" sometimes. Fixed "C-M-j" not
exiting.
Fixes #200
2015-08-18 Felix Lange <fjl@twurst.com>
ivy: enlarge the minibuffer window if the candiate list doesn't fit
Fixes #161 Fixes #198
2015-08-18 Oleh Krehel <ohwoeowho@gmail.com>
Set line-spacing to 0 in the minibuffer
* ivy.el (ivy--minibuffer-setup): Update.
Fixes #198
2015-08-14 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-kill-ring-save): Add and bind to "M-w"
Fixes #197
2015-08-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completing-read): Fix up last commit
Check if string before using `string-match'.
2015-08-12 Oleh Krehel <ohwoeowho@gmail.com>
When initial input contains a plus, escape it
* ivy.el (ivy-completing-read): Escape the plus in the initial input,
for it to not be interpreted like a regex.
Fixes #195
2015-08-12 Tassilo Horn <tsdh@gnu.org>
Fix #126 again.
After #126 has been solved, the regexp has been changed to
"\\`[`']?\\(.*\\)'?\\'"
where the trailing ' is optional ("'?"). However, the preceeding
"\\(.*\\)" group will already capture the trailing ' because .* is
greedy. Now I've replaced it with the non-greedy .*? which makes it
work again.
2015-08-07 Oleh Krehel <ohwoeowho@gmail.com>
Fix :dynamic-collection not being sorted
* ivy.el (ivy--sort-maybe): New defun. If the current completion has
sorting enabled, try to find the sorting function either in :sort or
`ivy-sort-functions-alist'.
(ivy--exhibit): Use `ivy--sort-maybe'.
* counsel.el (counsel--async-sentinel): Use `ivy--sort-maybe'.
2015-08-07 Oleh Krehel <ohwoeowho@gmail.com>
counsel-locate should use '' for the regex
* counsel.el (counsel-unquote-regex-parens): New defun.
(counsel-locate-function): Update.
(counsel-ag-function): Update.
Fixes #194
2015-08-07 Chunyang Xu <xuchunyang56@gmail.com>
(counsel-locate): Support OS X
- OS X "open" is the equivalent to "xdg-open"
- OS X "locate" doesn't support "--regex"
2015-08-06 Tassilo Horn <tsdh@gnu.org>
(counsel-locate): Allow customizing locate options
2015-08-05 Oleh Krehel <ohwoeowho@gmail.com>
Fix up ivy-recentf and ivy-switch-buffer window-wise
* ivy.el (ivy--switch-buffer-action):
(ivy-recentf): Use `with-ivy-window'.
2015-08-05 Oleh Krehel <ohwoeowho@gmail.com>
doc/Changelog.org: Add
2015-08-05 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-find-file): Fix window focus issue
"C-M-n" should work fine now.
2015-08-03 Oleh Krehel <ohwoeowho@gmail.com>
Preselect perfect matches with a leading ^
* ivy.el (ivy--filter): When e.g. "filter" is in the collection,
"^filter" input should always select it, even if other candidates
match.
2015-08-01 Chunyang Xu <xuchunyang56@gmail.com>
Allow ivy-count-format to be set as nil
2015-07-30 Oleh Krehel <ohwoeowho@gmail.com>
Add with-ivy-window macro
* ivy.el (with-ivy-window): New macro.
(ivy-yank-word): Update.
* swiper.el (swiper--window): Remove defvar.
(swiper-query-replace):
(swiper-avy):
(swiper-recenter-top-bottom):
(swiper--init):
(swiper--update-input-ivy):
(swiper--add-overlays): Update.
* counsel.el (counsel-git-grep-recenter):
(counsel-git-grep-action):
(counsel-M-x): Update.
(org-agenda-set-tags): Add a declare.
2015-07-30 Oleh Krehel <ohwoeowho@gmail.com>
Bind "C-M-j" to ivy-immediate-done
* ivy.el (ivy-minibuffer-map): Update.
`ivy-immediate-done' will return with the current minibuffer input, even
if the input matches a candidate.
It was possible so far to call it with "C-u C-j".
Fixes #183
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-org-tag-agenda): New command
* counsel.el (counsel-org-tag-agenda): It's just a flet wrapper around
`org-agenda-set-tags', changing `org-set-tags' to `counsel-org-tag'.
(counsel-org-tag-action): Don't use `with-selected-window', since
`org-agenda-set-tags' will change the buffer for us.
Re #177
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (org-bound-and-true-p): Use bound-and-true-p
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
Add a few more Org declarations
Re #179
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (org-last-tags-completion-table): Declare
Re #179
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (org-setting-tags): Declare dynamic var
Re #179
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-from-isearch): New command
Fixes #180
2015-07-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (org-bound-and-true-p): Update declare
2015-07-27 Erik Hetzner <egh@e6h.org>
Use recoll -t instead of recollq
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-org-tag): Delete dups
The issue of duplicates arises from this setting (off by default):
(setq org-complete-tags-always-offer-all-agenda-tags t)
Re #177
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-recoll): Simplify
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-org-tag): No need to be at heading
* counsel.el (counsel-org-tag): When not at heading, move there. Save
excursion.
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-recoll): New command
* counsel.el (counsel-recoll-function): New function.
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-ag): New command
* counsel.el (counsel-ag-function): New defun.
(counsel-git-grep): Update prompt.
Going from sync to async now is as simple as:
- add :dynamic-collection t
- replace `shell-command-to-string' with `counsel--async-command'
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
Update :dynamic-collection to be a boolean
* ivy.el (ivy--exhibit): Always use `ivy-state-collection', instead of
possibly `ivy-state-dynamic-collection'. The collection function may
return nil if it's async and doesn't want to update the minibuffer on
exit (to update it later in the sentinel).
* counsel.el (counsel-more-chars): New defun.
(counsel-git-grep-function): Use `counsel-more-chars'; in the async
case, return nil.
(counsel-git-grep): Update :dynamic-collection to a boolean.
(counsel--gg-sentinel):
(counsel--async-sentinel): Update to set the candidates to "Error"
instead of message "Error" - a lot less distracting this way.
(counsel-locate-function): Use `counsel-more-chars'; return "Working",
since it takes a few seconds to complete a single locate query.
(counsel-locate): Update.
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--exhibit): Check if in post-command-hook
* ivy.el (ivy--exhibit): A situation can occur when an async command
calls `ivy--exhibit' in the sentinel. It causes problems when the
minibuffer has already exited with "C-g".
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
Simplify counsel-git-grep logic
* ivy.el (ivy--exhibit): Remove the condition on (eq ivy--full-length
-1).
* counsel.el (counsel-git-grep-function): Simplify.
(counsel-gg-state): New defvar. Use this instead of
(setq ivy--full-length -1).
(counsel--gg-candidates): Set `counsel-gg-state' to -2. There are two
async processes to wait for until `ivy--exhibit' can be called:
- get the candidate count
- get the candidates Each of the async processes will increase the
number, and call
`ivy--exhibit' if the number reaches 0.
(counsel--gg-sentinel): Update.
(counsel--gg-count): Update.
2015-07-27 Oleh Krehel <ohwoeowho@gmail.com>
Fix "DEL" generating a "Quit" sometimes for counsel-git-grep
* ivy.el (ivy-backward-kill-word): It seems that `backward-kill-word' is
too elaborate; falling back to something simpler fixed the problem.
2015-07-26 Oleh Krehel <ohwoeowho@gmail.com>
Allow "M-o j" to switch to virtual buffers in other window
* ivy.el (ivy--switch-buffer-other-window-action): New defun.
(ivy-set-actions): Use `ivy--switch-buffer-other-window-action' instead
of `switch-to-buffer-other-window'.
2015-07-24 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-org-change-tags): Improve removing tags
2015-07-24 Oleh Krehel <ohwoeowho@gmail.com>
Fixup counsel-org-tag
* counsel.el (counsel-org-tag-action): Add ::
(counsel-org-tag): Set `org-last-tags-completion-table', otherwise
`org-tags-completion-function' doesn't work.
2015-07-24 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-org-tag): Replace org-set-tags
* counsel.el (counsel-org-tags): New defvar.
(counsel-org-change-tags): New defun, adapted from part of
`org-set-tags'.
(counsel-org-tag-action): New defun.
(counsel-org-tag-prompt): New defun.
(counsel-org-tag): New command.
**Using counsel-org-tag**
- The prompt is auto-updated to the currently selected tags.
- Selecting one of the already selected tags removes it from selection.
The best shortcut for selecting/removing multiple tags is "C-M-m" (or
"g" when the "C-o" hydra is active).
Re #177 Re #91
2015-07-24 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-call): Remove with-selected-window
* counsel.el (counsel-git-grep-action): Add with-selected-window.
* ivy.el (ivy-dispatching-done): Remove trailing ": ".
(ivy-switch-buffer): Add extra action "j" calls
`switch-to-buffer-other-window'. The change `ivy-dispatching-done' had
to be done because of this.
2015-07-24 Oleh Krehel <ohwoeowho@gmail.com>
Add actions for counsel-describe-function
2015-07-24 Oleh Krehel <ohwoeowho@gmail.com>
Add actions for counsel-describe-variable
2015-07-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-dispatching-done): Add a trailing newline
2015-07-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-dispatching-done): Display the candidate
2015-07-23 Oleh Krehel <ohwoeowho@gmail.com>
Allow "C-g" to interrupt ivy-dispatching-done
* ivy.el (ivy-dispatching-done): Update.
2015-07-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--preselect-index): Add matcher to arglist
* ivy.el (ivy--reset-state): Call `ivy--preselect-index' with matcher.
(ivy--preselect-index): In case there's a special matcher set, it
affects the candidate list, therefore it affects the preselect index.
Fixes #165
2015-07-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-dispatching-done): New command on "M-o"
* ivy.el (ivy-minibuffer-map): Bind "M-o" to `ivy-dispatching-done'.
(ivy-action-name): Update, all actions are now in hydra's format - key
binding, command, hint.
(ivy-read): The default action is bound to "o" in the dispatch.
(ivy-switch-buffer): Update to new action format.
* counsel.el (counsel-locate):
(counsel-rhythmbox): Update to new action format.
The new interface allows to do whatever you want with the selected
candidate with a very short key binding.
The old interface with "C-o w/s" still works, but:
- it gives a lot more info than necessary for only selecting action
- doesn't scale well with the number of actions: for 10 actions you
would cycle "w/s" a lot.
Example with `ivy-switch-buffer':
- switch to selected buffer: "C-m"
- kill selected buffer: "M-o k"; you get a hint right after "M-o".
When there is only one action, "M-o" will forward to "C-m".
2015-07-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-call): Add selected-window work-around for M-x
* ivy.el (ivy-call): For some commands that depend on the buffer, like
`counsel-git-grep' the action needs to be performed in
`ivy-state-window'. However, this results in wrong window for M-x calc.
Add a workaround until I figure out why this happens.
Fixes #176
2015-07-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el: Add featurep for hydra
Fixes #174
2015-07-21 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-variable-list): Add
* counsel.el (counsel-describe-variable): Use `counsel-variable-list'.
2015-07-21 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Update avy--goto -> avy-action-goto
2015-07-14 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Ignore Man-mode
2015-07-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-call): Bind to "C-M-m" or "M-RET"
"C-M-m" is close to "C-M-n" and "C-M-p", just as "M-RET" is close to
"RET". Previously, the only binding was "C-o g".
2015-07-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-count-format): Improve docstring
* ivy.el (ivy-minibuffer-grow):
(ivy-toggle-calling):
(ivy-sort-functions-alist): Checkdoc.
2015-07-11 Erik Hetzner <egh@e6h.org>
Allow % in prompt string
- quote % when passing prompt from ivy-completing-read to ivy-read
- add documentation in ivy-read that all % should be quoted
2015-07-10 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-rhythmbox-history): Add
* counsel.el (counsel-rhythmbox): Update.
2015-07-09 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Improve ivy-set-actions interaction
* ivy.el (ivy-read): When the base action is already a list, merge it
with the one obtained from `ivy-set-actions'.
2015-07-09 Oleh Krehel <ohwoeowho@gmail.com>
Add counsel-rhythmbox
* counsel.el (counsel-completion-beg):
(counsel-completion-end): Move declarations before first use.
(dired-jump): Declare.
(counsel-rhythmbox-enqueue-song): New defun.
(counsel-rhythmbox): New command. Requires `helm-rhythmbox' package, and
Rhythmbox, obviously.
* ivy.el (ivy-call): Make interactive. Add special handling for the case
when the collection is an alist. In that case, call the action not
with the collection item, but with the cdr of said item. A bit weird,
but that's the way Helm does it, and doing it in the same way means
the action functions are cross-compatible.
* ivy-hydra.el (hydra-ivy): Bind "g" to call the current action on
current candidate without exiting.
Now it's possible to make a query to Rhythmbox, "C-o" and navigate to a
song with "j" and "k". Try the song with "g". Or use "s" once and then
enqueue different songs with e.g. "jjgjjjgjgkkg".
2015-07-07 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--regex): Improve for trailing backslash
When there's a single trailing backslash, which would result in a bad
regex, ignore it.
2015-07-06 Oleh Krehel <ohwoeowho@gmail.com>
Add a new interface to customize additional exit points
* ivy.el (ivy--actions-list): New defvar. Store the exit points per
command.
(ivy-set-actions): New defun. Use this to set the extra exit points for
each command.
(ivy-read): Account for `ivy--actions-list'.
(ivy-switch-buffer): Set extra action to kill the buffer. Update the
call to `ivy-read'.
* counsel.el (counsel-locate): Use the single action in the function and
customize the rest via `ivy-set-actions'.
Re #164
2015-07-06 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-locate-history): Add
2015-07-02 Oleh Krehel <ohwoeowho@gmail.com>
Update index formatting logic
* ivy.el (ivy--reset-state): Update.
(ivy--insert-prompt): Simplify.
If you want to see both the index and the length of the candidates,
instead of just the length, it can be done like this:
(setq ivy-count-format "%d/%d ")
Each "%d" is replaced appropriately due to the total length of the
candidates. For instance, this one can result in "%4d/%-4d M-x ".
Re #167
2015-07-01 Oleh Krehel <ohwoeowho@gmail.com>
Allow to see the candidate index via ivy-count-format
* ivy.el (ivy--insert-prompt): Update.
To use this feature, use something like this:
(setq ivy-count-format "(%d/%d)")
Basically two number specifiers instead of the usual one. The problem
with this approach is that the prompt length will change as you scroll
e.g. from 9 to 10, which is uncomfortable.
Fixes #167
2015-07-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--reset-state): Fixup
Re #165
2015-07-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Don't put empty string on history
2015-07-01 Oleh Krehel <ohwoeowho@gmail.com>
Bind case-fold-search to t when the input is all lower-case
* ivy.el (ivy--filter): Update.
* ivy-test.el (ivy--filter): Add test.
- input "the" matches both "the" and "The".
- input "The" matches only "The".
Fixes #166
2015-07-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--reset-state): Fixup
2015-07-01 Oleh Krehel <ohwoeowho@gmail.com>
Make ffap work again
* ivy.el (ivy--reset-state): When completing files, consider the case
when the directory of PRESELECT isn't `default-directory'.
Fixes #165
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-switch-buffer): Add a multi-action interface
While in "C-o":
- Use "s" to make "C-m", "C-j", "C-M-n" and "C-M-p" kill
- Use "w" to switch back to normal.
Re #164
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
Add a multi-action interface for counsel-locate
* ivy-hydra.el (hydra-ivy): Display the current action and allow to
scroll the action list with "w" and "s".
* ivy.el (ivy--get-action): New defun, a getter for the action function,
since it can also be a list now.
(ivy--actionp): New defun, checks for the action list.
(ivy-next-action): New command, scrolls to the next action in the list.
(ivy-prev-action): New command, scrolls to the previous action in the
list.
(ivy-action-name): New defun.
(ivy-call): Use `ivy--get-action'.
(ivy-read): Use `ivy--get-action'.
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
Fixup the last two commits
* counsel.el (counsel-find-file): Update.
* ivy.el (ivy--buffer-list): Update.
Re #164
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
Add a custom keymap for counsel-find-file
* counsel.el (counsel-find-file-map): New defvar.
Re #164
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
Add a custom keymap for ivy-switch-buffer
* ivy.el (ivy-switch-buffer-map): New defvar.
Re #164
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-restrict-to-matches): Add and bind to "S-SPC"
2015-06-30 Oleh Krehel <ohwoeowho@gmail.com>
Make counsel-locate use a process
* counsel.el (counsel-locate-function): Update.
(counsel--async-command): New defun.
(counsel--async-sentinel): New defun.
(counsel-locate): Switch to :action, thus allowing "C-M-n" and
`ivy-resume'.
* swiper.el: Bump version.
2015-06-29 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el (hydra-ivy): Bind "C-o" to be a toggle
It makes sense for "C-o" to be a toggle, instead of just going one way.
2015-06-29 Oleh Krehel <ohwoeowho@gmail.com>
Make counsel-el work with "C-M-n" and "C-M-p"
* counsel.el (counsel-el): Use the whole obarray if no initial input is
given. Filter out only function when appropriate.
(counsel-completion-beg): New defvar.
(counsel-completion-end): New defvar.
(counsel--el-action): New defun.
* ivy.el (ivy--reset-state): Set `ivy--full-length' to nil.
2015-06-26 Oleh Krehel <ohwoeowho@gmail.com>
Fix the initial input bug introduced with "C-r"
* ivy.el (ivy-read): Use (ivy-state-initial-input ivy-last).
(ivy--reset-state): Set (ivy-state-initial-input ivy-last).
Fixes #162
2015-06-25 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-find-file): Use `file-name-history'
* counsel.el (package-installed-p): Declare.
2015-06-25 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep-history): New defvar
* counsel.el (counsel-git-grep): Use `counsel-git-grep-history'.
2015-06-25 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-history): New defvar
* swiper.el (swiper--ivy): Use `swiper-history'.
Allows to get more use of "M-p", "M-n" and "C-r".
2015-06-25 Oleh Krehel <ohwoeowho@gmail.com>
Allow to recursively match history with "C-r"
* ivy.el (ivy-minibuffer-map): Rebind "C-r" from
`ivy-previous-line-or-history' to `ivy-reverse-i-search'. "C-r"
binding was redundant, since "C-p" does almost the same.
(ivy-read): Separate the functionality that sets the global state based
on `ivy-last'.
(ivy--reset-state): New defun. Move all the global state setup here.
(ivy-reverse-i-search): New command. This is very similar to "C-r" in
bash - allows to match for history elements, instead of just scrolling
through them with "M-p" and "M-n".
2015-06-25 Oleh Krehel <ohwoeowho@gmail.com>
Fixup compilation warnings related to smex
2015-06-23 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-unicode-char): Use action-style call
Fixes #160
2015-06-23 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-load-theme): New command
2015-06-23 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Avoid compilation warning
* counsel.el (counsel-M-x): Use `command-execute' instead of
`execute-extended-command'.
2015-06-23 Oleh Krehel <ohwoeowho@gmail.com>
Fix last commit being incompatible with older Emacs
* ivy.el (ivy--format): Use `add-face-text-property' only when it's
bound.
2015-06-23 Oleh Krehel <ohwoeowho@gmail.com>
Fix color blending for composite faces
colir.el (colir-blend-face-background): Try to find the face among the
properties.
Re #151
2015-06-23 Oleh Krehel <ohwoeowho@gmail.com>
Re-scale the text height to default in the minibuffer
* ivy.el (ivy--format): Set the string height to default and turn off
overline, so that exactly `ivy-height' lines are visible, not less.
Fixes #151
2015-06-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el (hydra-ivy): Bind "C-g"
To make sure that "C-g" really exits the hydra.
2015-06-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-initial-inputs-alist): Add some Org commands
* ivy.el (ivy-initial-inputs-alist): Add `org-agenda-refile' and
`org-capture-refile'.
Fixes #156
2015-06-19 Kaushal Modi <kaushal.modi@gmail.com>
Fix the case where file name can contain ~
- The fix make opening files like init.el~ now possible. Earlier,
hitting that last ~ char switch the dir to ~/
- This commit will now make that cd to ~/ only if ~ is the first char in
the search term
2015-06-19 Greg Lucas <greg@glucas.net>
Match drive letter at start of current directory
When looking for the root of the current drive, make sure we only match
a drive letter at the beginning of the path.
2015-06-19 Greg Lucas <greg@glucas.net>
Add support for Windows drive letters
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Improve performance for "^" initial input
ivy.el (ivy--filter): There's no need to anchor when the previous regex
is "^" (matches everything). The result will be index 0 anyway, but
without this optimization it can be slow for ~30k candidates.
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Enable recursive minibuffers
Re #145
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Find file if given a full tramp path
* ivy.el (ivy-alt-done): Add another cond branch for `ivy-text' matching
a full remote file path.
Re #145
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Don't cut off "/ssh:foo" input
* ivy.el (ivy-alt-done): With the example input, offer a completion for
known remotes with the initial input "foo".
Re #145
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Add better positioning to counsel-git-grep finalizer
counsel.el (counsel-git-grep-action): Use a regex instead of just
splitting the string on ":". Additionally, goto match, not just the line
of the match.
Fixes #153
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Make counsel-M-x respect ivy-format-function
* counsel.el (counsel--format-function-M-x): Remove defun.
(counsel--M-x-transformer): New defun.
(counsel-M-x): Temporarily bind `ivy-format-function' to apply
`counsel--M-x-transformer' beforehand.
* ivy.el (ivy-format-function-arrow): Update style.
Fixes #150
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Fix non-file completions ability to enter tramp completion
* ivy.el (ivy-alt-done): Update.
Re #145
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
"M-i" should not switch directories
ivy.el (ivy-insert-current): When the current candidate is a directory,
just insert its name without the last "/". The user can insert "/" to
switch to that directory if necessary.
Re #141
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Add "^" as initial input to "C-h f" and "C-h v"
* ivy.el (ivy-initial-inputs-alist): Add entries for
`counsel-describe-function' and `counsel-describe-variable'.
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-kill-line): Add and bind to "C-k"
The only difference to `kill-line' is that it will kill the whole input
when at the end of the minibuffer. In that case, the regular `kill-line'
was extending into the second line of the minibuffer, which is
unacceptable.
2015-06-19 Oleh Krehel <ohwoeowho@gmail.com>
Add a set of commands for resizing minibuffer height
* ivy.el (ivy-minibuffer-grow): New command.
(ivy-minibuffer-shrink): New command.
* ivy-hydra.el (hydra-ivy): Bind "<" and ">".
Use "C-o >>>>>" to grow the minibuffer, and "C-o <<<<<" to shrink it.
Re #151
2015-06-18 Oleh Krehel <ohwoeowho@gmail.com>
Put the file instead of partial input on history
* ivy.el (ivy-read): When completing file names, put the whole file name
on history, not just the partial input that lead to that name. This is
important in order for `ivy--cd-maybe' to work.
Re #152
2015-06-18 Oleh Krehel <ohwoeowho@gmail.com>
"M-n", "M-p", "M-i" should switch directories when needed
* ivy.el (ivy-previous-history-element):
(ivy-next-history-element):
(ivy-switch-buffer): Call `ivy--cd-maybe'.
(ivy--cd-maybe): New defun. Check if the current input points to a
different directory than `ivy--directory'. If so, `ivy--cd' there.
Fixes #152
2015-06-17 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Fixup smex interaction
* counsel.el (counsel-M-x): Use `smex-rank' only if smex is installed.
Fixes #147
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Fixup
Re #136
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el (defhydra): Wrap in eval-when-compile
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
Swiper should not deactivate-mark
* swiper.el (swiper--init): Update to make it the same as `isearch'.
"C-SPC" + `swiper' should work to mark a region.
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el: Improve for hydra not installed
* ivy-hydra.el (hydra): No error on require.
(package-installed-p): Enable recursive minibuffers.
(hydra-ivy): Use ASCII char instead of Unicode, since the char width may
cause misalignment.
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-query-replace): Don't miss the first
* swiper.el (swiper-query-replace): Since the point is always after the
matching thing in swiper, it's necessary to move it before it in order
for `perform-replace' not to skip it.
Fixes #144
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
Require TRAMP in time
* ivy.el (ivy-alt-done): Require tramp before use. Store `ivy-last'
before calling `ivy-read', since each `ivy-read' overwrites
`ivy-last', and this one overwrites `counsel-find-file' action.
Fixes #145
2015-06-16 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Call smex-rank
Re #136
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
ivy-hydra.el (hydra-ivy): Add "C-j" and "C-m" exit points
Just to make sure that the hydra exits.
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
Allow to toggle matching mode with "C-o m"
* ivy.el (ivy-toggle-fuzzy): New command.
* ivy-hydra.el (hydra-ivy): Bind `ivy-toggle-fuzzy' to "m".
Fixes #142.
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-sort-functions-alist): Work for commands as well
* ivy.el (ivy-sort-functions-alist): Examine `this-command' in addition
to the COLLECTION arg of `completing-read'. Add `Man-goto-section' and
`org-refile' to the list, since these commands collect the candidates
in the order in which they are in the buffer => the candidates must
not be sorted. Mention this in the doc.
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-initial-inputs-alist): Add man and woman
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
Fix the minibuffer being too small with enough candidates
* ivy.el (ivy--format): Fix the bug of getting the minibuffer height
less than `ivy-height' when `ivy--index' was between `ivy--length'
and (- ivy--length (/ ivy--height 2)).
* ivy-test.el (ivy--format): Add test.
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-insert-current): Add and bind to "M-i"
Use "M-i" if you want something close to the current candidate. You can
follow up with an edit and select.
Fixes #141
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
Fix yank/undo bug
* ivy.el (ivy--insert-minibuffer): Bind `buffer-undo-list' later.
Previously, "C-y C-u" would result in the first char of yanked text not
being undone.
2015-06-15 Oleh Krehel <ohwoeowho@gmail.com>
Allow to customize the initial input for all commands
* ivy.el (ivy-initial-inputs-alist): New defvar. Customize this to get
an initial input in any command.
(ivy-read): Unless INTIAL-INPUT is given, look it up in
`ivy-initial-inputs-alist' based on `this-command'.
* counsel.el (counsel-M-x-initial-input): Remove defcustom. It's
superseded by `ivy-initial-inputs-alist'.
(counsel-M-x): Update.
Fixes #140
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--regex-fuzzy): Improve for "^" and "$"
* ivy.el (ivy--regex-fuzzy): Don't insert .* after ^ and before $.
* ivy-test.el (ivy--regex-fuzzy): Add test.
Fixes #139
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (hydra-ivy/body): Autoload
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Call smex-initialize
Otherwise, smex-cache isn't defined.
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
Bind "C-o" to hydra-ivy/body
* ivy.el (ivy-minibuffer-map): Update.
* ivy-hydra.el (hydra-ivy): New defhydra.
Add shortcuts:
"C-n" -> "j"
"C-p" -> "k"
"M-<" -> "h"
"M->" -> "l"
"C-j" -> "f"
"C-m" -> "d"
"C-g" -> "o" cancel "C-o" -> "i" toggle calling -> "c"
The hydra doesn't inhibit other bindings, so "C-v" and "M-v" also work
when you toggle calling on with "c".
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy-toggle-calling: Toggle calling "RET" action for current candidate
* ivy.el (ivy-calling): New defvar.
(ivy-set-index): New defun - a setter for `ivy--index' that can call the
current action when `ivy-calling' isn't nil.
(ivy-beginning-of-buffer):
(ivy-end-of-buffer):
(ivy-scroll-up-command):
(ivy-scroll-down-command):
(ivy-next-line):
(ivy-previous-line): Use `ivy-set-index' instead of a plain `setq'.
(ivy-toggle-calling): New defun - toggle `ivy-calling'.
(ivy-call): New defun - call the current action.
(ivy-next-line-and-call): Use `ivy-call'.
(ivy-previous-line-and-call): Use `ivy-call'.
(ivy-read): Reset `ivy-calling' to nil.
To make use of this functionality, bind `ivy-toggle-calling' in
`ivy-minibuffer-map'. After this, "C-n" will behave like "C-M-n" etc.
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
Replace "C-x 6" with "<f2>" in counsel-M-x
counsel.el (counsel--format-function-M-x): Update.
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-find-file-ignore-regexp): Default to nil
* counsel.el (counsel--find-file-matcher): Update.
Make the default behavior more similar to `find-file'. Move the previous
value to the docstring.
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Add a bunch of autoload cookies
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x-initial-input): New defcustom
* counsel.el (counsel-M-x): Use `counsel-M-x-initial-input'.
Re #138
2015-06-12 Oleh Krehel <ohwoeowho@gmail.com>
Allow "TAB" to complete when input starts with "^"
* ivy.el (ivy-partial): Strip "^" when forwarding to `try-completion'.
Afterwards, put it back.
Fixes #138
2015-06-10 Oleh Krehel <ohwoeowho@gmail.com>
Fixup ivy-resume for file completion
* ivy.el (ivy-resume): No longer add the preselect.
(ivy-read): Don't add initial-input "".
2015-06-10 Oleh Krehel <ohwoeowho@gmail.com>
Add fuzzy matching function
ivy.el (ivy--regex-fuzzy): New defun.
To enable fuzzy matching, set your `ivy-re-builders-alist' accordingly:
(setq ivy-re-builders-alist
'((t . ivy--regex-fuzzy)))
Re #136
2015-06-10 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): Piggyback on smex for sorting
* counsel.el (counsel-M-x): When smex is present, use it for sorting the
candidates. Also use `counsel-describe-map', so that "C-." and "C-,"
work for commands.
Re #136
2015-06-10 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-M-x): New command
* counsel.el (counsel--format-function-M-x): New defun.
Re #136.
2015-06-10 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-symbol-at-point): Improve
Fixes #137
2015-06-09 Oleh Krehel <ohwoeowho@gmail.com>
Add a hack for kill-buffer and invisible buffer
* ivy.el (ivy-read): When COLLECTION is 'internal-complete-buffer,
ignore the fact that REQUIRE-MATCH was set to t.
Normally, when REQUIRE-MATCH is t, the COLLECTION should not be
extended with PRESELECT.
Fixes #135
2015-06-09 Oleh Krehel <ohwoeowho@gmail.com>
Account for minibuffer-depth-indication-mode
* ivy.el (ivy--insert-prompt): When `minibuffer-depth-indication-mode'
is on, and `minibuffer-depth' is more than 1, prepend it to prompt.
Fixes #134
2015-06-09 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--switch-buffer-action): Add work-around
If BUFFER is live, and can also be virtual, don't open the virtual one.
This work-around should be disabled once uniquify is added to buffer
list.
2015-06-09 Oleh Krehel <ohwoeowho@gmail.com>
counsel-git-grep should quote strings better
* counsel.el (counsel-git-grep-function):
(counsel--gg-candidates): Update.
Fixes an errror when the input has a " in it.
2015-06-08 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-minibuffer-map): Bind ivy-yank-word to "M-j"
Re #133
2015-06-04 Oleh Krehel <ohwoeowho@gmail.com>
Make counsel-git-grep fully async
* counsel.el (counsel-git-grep-count): Rename to `counsel--gg-count' and
make it async.
(counsel-git-grep-function): Set `ivy--full-length' to -1. It means that
`ivy--exhibit' should do nothing until the length is re-computed.
(counsel-git-grep): Use the sync version of `counsel-git-grep-count' for
the initial repo line count.
(counsel--gg-candidates): New defun. When called, kill the previous git
grep process and start a new one. The sentinel will insert the
candidates, bypassing the `ivy--exhibit'.
(counsel--gg-sentinel): New defun.
(counsel--gg-count): Rename from `counsel-git-grep-count'. When finished
computing, redisplay.
* ivy.el (ivy--exhibit): Don't expect dynamic collection to return the
candidates as before. Just call it and expect it to redisplay the
minibuffer.
2015-06-04 Oleh Krehel <ohwoeowho@gmail.com>
Fixup compilation warnings
2015-06-04 Tassilo Horn <tsdh@gnu.org>
Regexp-quote name of candidate buffer to be preselected
Fixes #128
2015-06-04 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-virtual): New defface
* ivy.el (ivy--virtual-buffers): Use `ivy-virtual'. No need for
`ido-use-faces' approach, the user can just customize
`ivy-virtual' to look like `default' if needed.
Fixes #129
2015-06-02 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--done): Set ivy--current
Fixes a bug of using :action for completing file names.
2015-06-02 Oleh Krehel <ohwoeowho@gmail.com>
Handle symbol-at-point better in non-Elisp buffers
* counsel.el (counsel-symbol-at-point): New defun.
(counsel-describe-variable): Update.
(counsel-describe-function): Update.
Fixes #126
2015-06-01 Oleh Krehel <ohwoeowho@gmail.com>
Swiper should preserve column for empty input
swiper.el (swiper--update-input-ivy): When there's no input yet, don't
move point.
Re #125
2015-06-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-yank-word): New command
* swiper.el (swiper--update-input-ivy): Move point to current regex, not
just current line.
Gives a behavior similar to "C-w" of `isearch'. Possible binding:
(define-key ivy-minibuffer-map (kbd "C-w") 'ivy-yank-word)
Fixes #125
2015-06-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-recentf): New command
Fixes #124
2015-05-30 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-find-file-at-point): New defcustom
* counsel.el (counsel-find-file): When `counsel-find-file-at-point' is
non-nil, add the file at point to the list of candidates.
Fixes #123
2015-05-30 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-find-file): Extend `find-file'
* counsel.el (counsel-find-file): Forward to `find-file', with Ivy
completion. `ivy-next-line-and-call' as well as `ivy-resume' should
work.
(counsel--find-file-matcher): New defun.
(counsel-find-file-ignore-regexp): Regexp of files to ignore.
Fixes #122
Recommended binding:
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
Peek at files with "C-M-n" and "C-M-p". Input a leading dot to see all
files.
2015-05-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-info-lookup-symbol): Add a require
In case it's called non-interactively.
2015-05-28 Tassilo Horn <tsdh@gnu.org>
Add info lookup binding to counsel-describe-map
* counsel.el (counsel-describe-map): Bind C-, to
counsel--info-lookup-symbol.
(counsel--info-lookup-symbol): New command. Just sets the ivy action to
counsel-info-lookup-symbol.
2015-05-28 Oleh Krehel <ohwoeowho@gmail.com>
Change the :matcher interface
* ivy.el (ivy--filter): The matcher is now a function that takes a
regexp and candidates and returns the filtered candidates.
* counsel.el (counsel-git-grep-matcher): Cache matched candidates. This
is very important for "C-n" / "C-p", especially near the threshold
where a switch to :dynamic-collection is made.
2015-05-28 Oleh Krehel <ohwoeowho@gmail.com>
Avoid ensuring font lock when magit-blame-mode is active
swiper.el (swiper-font-lock-ensure): Update.
2015-05-26 Oleh Krehel <ohwoeowho@gmail.com>
Allow to open an Info file on the file system
* ivy.el (ivy-alt-done): Update.
When in Info-mode, press "g" and select either "(./)" or "(../)" to
switch to file name completion. That file will be opened with Info.
2015-05-25 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--ivy): Don't double-quote preselect
The :preselect is already quoted in `ivy--preselect-index'.
2015-05-25 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-avy): Don't start on empty input
Fixes abo-abo/avy#50
2015-05-24 Ingo Lohmar <i.lohmar@gmail.com>
ivy.el (ivy-next-line): Fix wraparound at end of candidates
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-avy): Use only the current window
Fixes #117
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Bump version
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Add a secion on Ivy
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
The :action parameter to ivy-read should take one arg
* ivy.el (ivy-next-line-and-call): Update.
(ivy-previous-line-and-call): Update.
(ivy-read): Update.
(ivy--switch-buffer-action): Update.
* swiper.el (swiper-query-replace): Update.
* counsel.el (counsel--find-symbol): Update.
(counsel-describe-variable): Update.
(counsel-describe-function): Update.
(counsel-git): Update.
(counsel-git-grep-action): Update.
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
Fixup "C-u C-j" for `ivy-switch-buffer'
ivy.el (ivy-immediate-done): Since action-style call is used now,
`ivy--current' must be set to `ivy-test', since it's `ivy--current' that
will count as completion result.
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git): Switch to action-style call
This allows "C-M-n" and "C-M-p" to be used.
Re #114
2015-05-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completing-read): Check for a cons initial-input
2015-05-23 Stefan Monnier <monnier@iro.umontreal.ca>
* swiper/ivy.el: Clean up regexps and pseudo-closures
Don't require cl-lib twice.
(ivy-read, ivy--filter): Use closures instead of `(lambda ...).
(ivy--format, ivy--filter, ivy--exhibit, ivy--insert-prompt)
(ivy--regex-ignore-order, ivy--regex, ivy--sorted-files)
(ivy-partial-or-done, ivy-alt-done): Don't use ^/$ to match string
bounds.
2015-05-19 Oleh Krehel <ohwoeowho@gmail.com>
Fixup compilation warnings
2015-05-19 Oleh Krehel <ohwoeowho@gmail.com>
When building a regex, consider ^ only at start
swiper.el (swiper--re-builder): Update.
2015-05-19 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-info-lookup-symbol): Turn on sorting
2015-05-17 Oleh Krehel <ohwoeowho@gmail.com>
Don't try to call permanent action if there's none
* ivy.el (ivy-next-line-and-call): Update.
(ivy-previous-line-and-call): Update.
Fixes #114.
2015-05-17 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-forward-char): Add and bind to "C-f"
This is to avoid problems for the ido-related "C-x C-f C-f" reflex.
2015-05-16 Oleh Krehel <ohwoeowho@gmail.com>
Don't error on incomplete bad regexp in counsel-git-grep
counsel.el (counsel-git-grep-matcher): Update.
2015-05-16 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep): Warn if not in a repository
2015-05-16 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-kill-word): Add and bind to "M-d"
Fixes #94
2015-05-15 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Add sample init
Fixes #112
2015-05-15 __rompy <rompy.under@gmail.com>
Fixed ivy--preselect-index on windows where the drives folders ends with
a backslash (C:\, D:\)
2015-05-14 Oleh Krehel <ohwoeowho@gmail.com>
Update the way spaces are quoted using ivy
* ivy.el (ivy--split): Split only on single spaces. From all other space
groups, remove one space.
* ivy-test.el (ivy--split): Add test.
Fixes #109
2015-05-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-partial-or-done): More predictability
* ivy.el (ivy-partial-or-done): Forward to `ivy-alt-done' only if
`ivy-partial' did nothing new, and either previous command was
`ivy-partial-or-done', or there's exactly one matching candidate.
Fixes #107
2015-05-13 Oleh Krehel <ohwoeowho@gmail.com>
Allow to recenter with "C-l" during counsel-git-grep
* counsel.el (counsel-git-grep-map): New defvar.
(counsel-git-grep-recenter): New command.
(counsel-git-grep-action): New defun.
(counsel-git-grep): Update.
Fixes #103
2015-05-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-partial-or-done): Update doc
Re #105
2015-05-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-partial-or-done): Always forward to `ivy-alt-done'
Fixes #105
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-delete-char): Add and bind to "C-d"
`delete-char' must not be called when at end of line, since that would
bring the first candidate into the input.
Fixes #94
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-switch-buffer): Preselect other-buffer
* ivy.el (ivy-switch-buffer): Preselect other buffer, just like
`switch-to-buffer' does it.
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Keep the last ivy--index for :dynamic-collection
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
counsel-git-grep now works with ivy-resume
* ivy.el (ivy-state): New field DYNAMIC-COLLECTION.
(ivy-resume): Update.
(ivy-read): New argument DYNAMIC-COLLECTION. When this is non-nil,
ignore collection and matchers etc, and just obtain the filtered
candidates by calling DYNAMIC-COLLECTION each time the input changes.
Fixes #100
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
Introduce :matcher for counsel-git-grep
* ivy.el (ivy-state): Add MATCHER field.
(ivy-resume): Update.
(ivy-read): Add MATCHER argument. To make things faster, MATCHER can
reuse `ivy--old-re', but it's not required. MATCHER is a function that
takes a candidate and returns non-nil if it matches.
* counsel.el (counsel-git-grep): Use :matcher.
(counsel-git-grep-matcher): New defun. Skip the file name and line
number, then match as usual.
Fixes #99
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
Forward to minibuffer-complete for filenames only if "^/"
* ivy.el (ivy-partial-or-done): Update.
Fixes #102
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
Properly update virtual buffers for "^ " interaction
* ivy.el (ivy-read): Use `ivy--buffer-list'.
(ivy--exhibit): Use `ivy--buffer-list'.
(ivy-add-virtual-buffers): Remove.
(ivy--buffer-list): New defun.
Re #68
2015-05-12 Oleh Krehel <ohwoeowho@gmail.com>
Fix the error switching to non-existent buffers
* ivy.el (ivy-read): Use `ivy-add-virtual-buffers'.
(ivy-buffer-list): Remove.
(ivy-add-virtual-buffers): New defun.
(ivy--switch-buffer-action): New defun, consider `ivy--current' being
zero length.
(ivy-switch-buffer): Use `ivy--switch-buffer-action'.
Fixes #101
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-partial-or-done): Fixup
* ivy.el (ivy-partial-or-done): Switch `default-directory' so that
`minibuffer-complete' is aware of it. Select a directory only if there
is only one.
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-partial-or-done): Fixup
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
When completing file names, defer to `minibuffer-complete' for "TAB"
* ivy.el (ivy-partial-or-done): Call `minibuffer-complete'. If the
resulting text is a valid directory, move there.
(ivy-read): Setup `minibuffer-completion-table' and
`minibuffer-completion-predicate'. This makes `minibuffer-complete'
work.
Fixes #92
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Ignore fundamental-mode
ELP uses this.
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
Allow to customize the minibuffer formatter
* ivy.el (ivy-format-function): New defvar.
(ivy-format-function-default): New defun.
(ivy-format-function-arrow): New defun, alternative for
`ivy-format-function'.
Fixes #87
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
Update test
ivy-test.el (swiper--re-builder): Rename from `ivy--transform-re'.
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
Swiper should use the :re-builder argument
* ivy.el (ivy--transform-re): Remove defun, :re-builder should be used
for this logic.
(ivy--filter): Update.
* swiper.el (swiper-avy): Use `ivy--regex'.
(swiper--init): Don't set `ivy--regex-function' - it will be set by
:re-builder.
(swiper--re-builder): New defun.
(swiper--ivy): Use :re-builder in call to `ivy-read'.
(swiper--update-input-ivy): Use `ivy--regex'.
(swiper--action): Use `ivy--regex'.
Fixes #90
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Add a re-builder argument
* ivy.el (ivy-state): Add a RE-BUILDER field.
(ivy-resume): Use RE-BUILDER field.
(ivy-read): Set `ivy--regex-function' to RE-BUILDER if it's given.
2015-05-11 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-backward-kill-word): Add and bind to "M-DEL"
Fixes #94
2015-05-09 Oleh Krehel <ohwoeowho@gmail.com>
Fix the transition from a bad regex to good one
* ivy.el (ivy--filter): Update.
Fixes #93
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
Declare swiper-map
Fixes #90
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
Rename avy-swiper to swiper-avy
* swiper.el (swiper-avy): Rename and fix the regex.
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-use-virtual-buffers): New defcustom
Re #84
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
Add support for virtual buffers
* ivy.el (ivy-mode-map): New defvar. Remap `switch-to-buffer' to
`ivy-switch-buffer'.
(ivy-mode): Use `ivy-mode-map'.
(ivy--virtual-buffers): New devar.
(ivy--virtual-buffers): New defun.
(ivy-buffer-list): Return a list of buffers, taking
`ido-use-virtual-buffers' into account.
(ivy-switch-buffer): New command.
Fixes #84
2015-05-08 Tassilo Horn <tsdh@gnu.org>
Simplify ivy-partial-or-done
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
Add swiper -> avy finalizer
* ivy.el (ivy-quit-and-run): New defmacro.
(tramp-get-completion-function): Add declare.
* swiper.el (swiper-map): Bind `avy-swiper' to "C-'".
(avy-swiper): New defun - jump to one of the currently visible swiper
candidates using avy.
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
Allow to use "^" in swiper
* swiper.el (swiper--width): New defvar.
(swiper--candidates): Set `swiper--width'.
* ivy.el (ivy--transform-re): New defun - transform the regex
specifically for `swiper'.
(ivy--filter): Call `ivy--transform-re'.
* ivy-test.el (ivy--transform-re): Add test.
Fixes #82
2015-05-08 Oleh Krehel <ohwoeowho@gmail.com>
Add ivy-partial: partial complete without exiting
* ivy.el (ivy-partial-or-done): Forward to `ivy-partial'.
(ivy-partial): New defun.
If you want a different style of completion for "TAB", do this in your
config:
(define-key ivy-minibuffer-map (kbd "TAB") 'ivy-partial)
Fixes #85 Fixes #86
2015-05-06 Oleh Krehel <ohwoeowho@gmail.com>
Try to prevent the resize of minibuffer window
* ivy.el (ivy--insert-minibuffer): Temporarily bind
`resize-mini-windows' to nil.
From its doc:
A value of `grow-only', the default, means let mini-windows grow
only;
they return to their normal size when the minibuffer is closed, or
the
echo area becomes empty.
It could be that an update catches this minibuffer empty during
`ivy--insert-minibuffer'.
Re #77
2015-05-06 Oleh Krehel <ohwoeowho@gmail.com>
Merge ivy--update-fn into ivy-last
* ivy.el (ivy--update-fn): Remove defvar.
(ivy-read): Update.
(ivy--insert-minibuffer): Update.
2015-05-06 Oleh Krehel <ohwoeowho@gmail.com>
Add parents using 'display for `counsel-load-library'
* counsel.el (counsel--find-symbol): The argument string may have a
'full-name property.
(counsel-string-compose): New defun.
(counsel-load-library): Make libraries unique through text properties.
Re #79
2015-05-06 Oleh Krehel <ohwoeowho@gmail.com>
Add counsel-load-library
* counsel.el (counsel-directory-parent): New defun.
(counsel-load-library): New command.
Improve on `load-library':
- don't consider .*elc or .*pkg.elc?, they're usually useless
- resolve duplicates in a similar way to uniquify (prepend parent
directory)
- allow to jump-to-library with "C-." (see `counsel-describe-map')
2015-05-06 Oleh Krehel <ohwoeowho@gmail.com>
Work around grep-read-files
* ivy.el (ivy--done): If history is `grep-files-history', the caller is
`grep-read-files'. Don't expand the file name, since it's probably a
glob, and `find' doesn't work with expanded globs.
It should now be possible to simply "M-x" rgrep "RET" "RET" "RET".
Fixes #72
2015-05-06 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-partial-or-done): Handle empty input
Fixes #81
2015-05-05 Oleh Krehel <ohwoeowho@gmail.com>
Improve "TAB" interaction with `confirm-nonexistent-file-or-buffer'
* ivy.el (ivy-partial-or-done): When
`confirm-nonexistent-file-or-buffer' is t, and there are no
candidates, modify the prompt to "(confirm)" right after the first
"TAB".
Re #76
2015-05-05 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Simplify and improve
* ivy.el (ivy--done): New defun.
(ivy-done): Consider `confirm-nonexistent-file-or-buffer' for buffers as
well.
Fixes #76
2015-05-05 Oleh Krehel <ohwoeowho@gmail.com>
Merge ivy--collection into ivy-last
* ivy.el (ivy--collection): Delete defvar.
(ivy-read): Update.
(ivy--exhibit): Update.
2015-05-05 Oleh Krehel <ohwoeowho@gmail.com>
Require dired when completing file names
* ivy.el (ivy-read): Update.
Fixes #78
2015-05-04 Oleh Krehel <ohwoeowho@gmail.com>
Make "TAB" switch directories properly
* ivy.el (ivy-partial-or-done): Forward to `ivy-alt-done'.
Fixes #75
2015-05-04 Oleh Krehel <ohwoeowho@gmail.com>
"TAB" shouldn't delete input when no candidate
ivy.el (ivy-partial-or-done): Update.
Fixes #74
2015-05-04 Oleh Krehel <ohwoeowho@gmail.com>
Ignore case for "TAB"
* ivy.el (ivy-partial-or-done): Update.
Now, e.g. "pub" can expand to "Public License".
2015-05-04 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-tab-space): New defcustom
* ivy.el (ivy-partial-or-done): Insert an extra space when
`ivy-tab-space' is non-nil. This is useful to complete partially and
start a new group at once.
Fixes #73
2015-05-03 Oleh Krehel <ohwoeowho@gmail.com>
Add an option for out-of-order matching
* ivy.el (ivy--regex-ignore-order): New defun.
* swiper.el (swiper--init): Set `ivy--regex-function'.
(swiper--update-input-ivy): Use `ivy--regex-function'.
(swiper--action): Use `ivy--regex-function'.
Example of use:
(setq ivy-re-builders-alist
'((t . ivy--regex-ignore-order)))
With this, e.g. swiper will match "bar foo" from input "foo bar".
2015-05-03 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Bump version
2015-05-03 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-resume): Quote the preselect
2015-05-02 Oleh Krehel <ohwoeowho@gmail.com>
Fix the candidate index for `ivy-resume'
* ivy.el (ivy--preselect-index): The the regex, not the plain text.
2015-05-02 Oleh Krehel <ohwoeowho@gmail.com>
Add unwind argument to ivy-read
* ivy.el (ivy-state): Add `unwind' field.
(ivy-resume): Update.
(ivy-read): Call the `unwind' argument in the unwind form.
* swiper.el (swiper--ivy): Use `unwind' for `ivy-read'.
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
Merge ivy--persistent-action into ivy-state-action
* counsel.el (counsel-git-grep): Update.
* ivy.el (ivy--persistent-action): Remove defvar.
(ivy-next-line-and-call): Update.
(ivy-previous-line-and-call): Update.
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
ivy-resume now works for functions that supply action
ivy.el (ivy-resume): Use action
Functions like `counsel-describe-funtion' and `counsel-describe-varible'
are now resume-able: after finishing with "RET" or breaking out with
"C-g" it's possible to resume the query in the same state as it was
(same collection, input, index).
With:
(global-set-key (kbd "C-c C-r") 'ivy-resume)
it's possible to e.g.:
- "F1 f" info read "RET" to describe Info-breadcrumbs
- "C-c C-r" "C-n" to describe Info-read-node-name
- "C-c C-r" "C-n" to describe Info-read-node-name-1
...
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
Merge ivy--action into ivy-last
* ivy.el (ivy-state): Add action field.
(ivy-set-action): New defun. Just a shortcut to set action.
(ivy--action): Remove defvar.
(ivy-read): Add action argument. Check (ivy-state-action ivy-last) in
the end and call it, since the action can change during the completion.
(ivy--insert-prompt): Add `counsel-find-symbol' to the list.
(ivy--format): If there are no matches, set `ivy--current' to "".
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
Merge ivy-window into ivy-last
* ivy.el (ivy-state): Add a window field.
(ivy-window): Remove defvar.
(ivy-next-line-and-call): Update.
(ivy-previous-line-and-call): Update.
(ivy-read): Update.
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
Merge ivy-def into ivy-last
* ivy.el (ivy-def): Remove defvar.
(ivy-read): Update.
(ivy--filter): Update.
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
Allow to quote spaces while matching
* ivy.el (ivy--split): New defun.
Use (ivy--split str) in place of (split-string str " +" t). Allows to
"quote" N spaces by inputting N+1 spaces.
2015-05-01 Oleh Krehel <ohwoeowho@gmail.com>
Add ivy-state struct
* ivy.el (ivy-state): New defstruct.
(ivy-last): A single global to store an `ivy-state' struct.
(ivy-require-match): Move into `ivy-last'.
(ivy-done): Update.
(ivy-resume): New defun. Initial draft, kind of works for swiper. Need
to add a callback of what to do with the result as an argument.
(ivy-read): Store all arguments into `ivy-last'.
(ivy-completing-read): Update doc.
2015-04-30 Oleh Krehel <ohwoeowho@gmail.com>
Allow for "/ssh:user@" as well as for "/ssh:"
* ivy.el (ivy-alt-done): Update.
Re #59
2015-04-30 Oleh Krehel <ohwoeowho@gmail.com>
Improve TRAMP completion for ivy-mode
* ivy.el (ivy-build-tramp-name): New defun.
(ivy-alt-done): Use arcane TRAMP stuff to complete host names.
Re #59
2015-04-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Reset `ivy-text' earlier
Related to `counsel-git-grep' "-3 chars more".
2015-04-30 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--regex): Fixup
Fixes #62
2015-04-30 Oleh Krehel <ohwoeowho@gmail.com>
Don't error on bad regex
* ivy.el (ivy--filter): When on bad regex, just set the result to nil.
Fixes #70
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
Update and improve faces
* ivy.el (ivy-subdir): Inherit from dired-directory.
* swiper.el (swiper-match-face-1): Update doc.
(swiper-match-face-2): Update doc.
(swiper-match-face-3): Update doc.
(swiper-match-face-4): Inherit from isearch-fail.
(swiper--add-overlays): Fix the faces order swapping on the second
match.
Now it finally works as planned: face-1 is the background (re group 0),
next it cycles: face-2, face-3, face-4, face-2, face-3, face-4.
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
Add gamma-correction to alpha-blending
* colir.el (colir-compose-method): Make 'colir-compose-alpha default.
(colir-compose-alpha): Add gamma-correction.
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
colir.el: Add two additional blend algorithms
* colir.el (colir-join): Remove.
(color): Require.
(colir-compose-method): New defcustom.
(colir-compose-soft-light): New defun.
(colir-compose-overlay): New defun.
(colir-compose-alpha): New defun.
(colir-blend): Update.
(colir-blend-face-background): Update.
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--exhibit): Fixup last commit
* ivy.el (ivy--old-text): Should always be a string.
(ivy-read): Update.
(ivy--exhibit): Recompute candidates on flip, always set `ivy--old-re'
to nil.
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
Improve hidden buffer completion further
* ivy.el (ivy--exhibit): Update.
Fixes #68 Fixes #69
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
Improve the completion of hidden buffers
* ivy.el (ivy--collection): New defvar.
(ivy-read): Update.
(ivy--exhibit): Update.
Re #68.
2015-04-29 Oleh Krehel <ohwoeowho@gmail.com>
Bind "TAB" to do partial completion
* ivy.el (ivy-minibuffer-map): Update.
(ivy-alt-done): New defun.
(ivy--old-text): Update.
Re #63.
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep): Add optional initial-input
* counsel.el (counsel-git-grep): Update.
Fixes #66
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-re-builders-alist): Improve doc
Re #62
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Fixup docstrings
* ivy.el (ivy-require-match): Update.
(ivy-def): Update.
(ivy--prompt-extra): Update.
(ivy--maybe-scroll-history): Update.
(ivy-completing-read): Update.
(ivy--insert-minibuffer): Update.
(ivy--filter): Update.
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
Add an option for multi-tier regex matching
* ivy.el (ivy--regex-plus): New defun. This is an example for the
multi-tier interface.
(ivy--filter): Update.
To use it, add e.g.:
(setq ivy-re-builders-alist
'((t . ivy--regex-plus)))
Example using boost_1_58_0 and `find-file-in-project`:
* "utility" - 234 matches
* "utility hpp" - 139 matches
* "utility !hpp" - 95 matches
Fixes #62
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
Makefile: Update
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
Use alpha compositing to add ivy-current-match face
* ivy.el (ivy--exhibit): Use `colir-blend-face-background'. In case it
fails, try `font-lock-append-text-property', which was used before.
* colir.el (colir-join): New defun.
(colir-blend): New defun.
(colir-blend-face-background): New defun.
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude `elfeed-search-mode'
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--filter): Fixup
Fixes #65
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Treat `ivy-text' with ":" verbatim
* ivy.el (ivy-alt-done): Should work better now for ssh: stuff.
It should be possible to type in any directory: `/ssh:user@domain.com:`
<kbd>C-j</kbd> and get completion.
Re #59
2015-04-28 Oleh Krehel <ohwoeowho@gmail.com>
Store the preselect and use it for empty ivy-text
* ivy.el (ivy-def): New defvar.
(ivy-read): Store `ivy-def'.
(ivy-completing-read): Update.
(ivy--filter): When the input is empty, set `ivy--index' to select
`ivy-def'.
Fixes #64
2015-04-25 Oleh Krehel <ohwoeowho@gmail.com>
Improve completion history using the propertize trick
* ivy.el (ivy-previous-history-element): Update.
(ivy-next-history-element): Update.
(ivy--maybe-scroll-history): New defun. When the history element string
has ivy-index property, set `ivy--index' to that.
Fixes #46
2015-04-24 Oleh Krehel <ohwoeowho@gmail.com>
Minibuffer faces should inherit minibuffer-prompt
* ivy.el (ivy-confirm-face): Update.
(ivy-match-required-face): Update.
Re #60
2015-04-24 Oleh Krehel <ohwoeowho@gmail.com>
Improve the match confirm while completing files
* ivy.el (ivy-confirm-face): New face.
(ivy-match-required-face): New face.
(ivy--prompt-extra): New defvar, the prompt is concatenaded with this.
(ivy--extend-prompt): Remove.
(ivy-done): Update.
(ivy--insert-prompt): Use `ivy--prompt-extra'. Reset it unless the
`this-command' is appropriate.
(ivy--set-match-props): New defun.
Fixes #60
2015-04-24 Oleh Krehel <ohwoeowho@gmail.com>
Reset to the first candidate when switching directories
* ivy.el (ivy--cd): Update.
2015-04-24 Oleh Krehel <ohwoeowho@gmail.com>
Propertize remote buffers with ivy-remote face
* ivy.el (ivy-remote): New face.
(ivy-read): Update.
Fixes #61
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
Respect `confirm-nonexistent-file-or-buffer'
* ivy.el (ivy--extend-prompt): New defun.
(ivy-done): Ask for a confirmation if no candidates match and
`confirm-nonexistent-file-or-buffer' is t.
Re #60
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Fixup preselect addition
It was unnecessarily inserting `preselect' when completing tags.
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--cd): Reset `ivy--old-re'
* ivy.el (ivy--cd): Switching directory switches the candidates, so
`ivy--old-re' must be invalidated.
Fixes #58
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (Info-current-file): Declare
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
Use "//" to move to root instead of "/" as before
ivy.el (ivy--exhibit): Update.
This improves the situation with tramp and generally avoids losing the
current directory by pressing "/" by accident.
Fixes #59
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
Avoid sorting org refile candidates
* ivy.el (ivy-read): Update.
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
Exclude jabber-chat-mode from font-lock
* swiper.el (swiper-font-lock-ensure): Update.
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
Remove globbing heuristics for file name completion
* ivy.el (ivy-done): Simplify.
(ivy-alt-done): Simplify.
If you want to exit with the current text, ignoring candidates, use
`ivy-immediate-done' instead. Works for globs as well.
Fixes #55
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep): Fixup
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-backward-delete-char): Expand `ivy--directory'
This avoids the situation of getting a nil for "~/".
Re #57
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Update wrt globs
Re #55
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-query-replace): Fix
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--ivy): Check for stand-alone ivy
Re #54
2015-04-23 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Don't expand globs
Re #55
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Update video link
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
Fixup `swiper-query-replace'
* swiper.el (swiper-query-replace): Make sure to use `swiper--window'.
* ivy.el (ivy--minibuffer-setup): Remove the `use-local-map' statement,
the map is already set in `read-from-minibuffer'.
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy-test.el (ivy-read): Update test.
REQUIRE-MATCH is nil by default.
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Fix preselect logic
* ivy.el (ivy-read): Update.
Fixes e.g. `ert' passing "t" as the default, which isn't in collection,
but `all-completions' doesn't return nil.
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Fixup
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--add-face): Don't fail for weird str
Fixes #44
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--ivy): Fix preselect being added
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--exhibit): Wrap in `while-no-input'
* ivy.el (ivy--exhibit): `ivy--dynamic-function' will sometimes use
`call-process'. Adding `while-no-input' speeds up things a lot, at the
cost of a small message interrupting the minibuffer when
`call-process' takes too long or the user types too fast.
This message is not an issue for emacs-snapshot.
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
Bind "M-q" to `ivy-toggle-regexp-quote'
* ivy.el (ivy-minibuffer-map): Update.
(ivy--regexp-quote): New defvar.
(ivy-toggle-regexp-quote): New command, toggle `ivy--regex-function'
between the value selected in `ivy-read' and `ivy--regexp-quote'.
(ivy-read): Reset `ivy--regexp-quote' to 'regexp-quote.
Fixes #48
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
Allow to customize the regex matching per-collection
* ivy.el (ivy--regex-function): New defvar.
(ivy-re-builders-alist): New defvar, use this to customize.
(ivy-read): Update.
(ivy--filter): Update.
Currently, it only works for function collections. Example:
(setq ivy-re-builders-alist
'((read-file-name-internal . regexp-quote)
(t . ivy--regex)))
Re #48
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Be more strict for `require-match'
When `require-match' isn't in (nil confirm confirm-after-completion),
don't allow to exit if there isn't a match. Instead, amend the prompt
with "(match required)".
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
Change `ivy-read' to a cl-defun
* ivy.el (ivy-read): All args but PROMPT and COLLECTION are now keys.
The existing basic calls to `ivy-read' should still work, the others
need to be updated. It's best to try to use `ivy-completing-read' if
possible, since it conforms to the `completing-read' arguments. New
arguments: REQUIRE-MATCH and HISTORY. If HISTORY is nil, `ivy-history'
is used.
(ivy--sorted-files): Don't try to extend the collection.
(ivy-completing-read): Update.
* swiper.el (swiper--ivy): Update.
* counsel.el (counsel-describe-symbol-history): New defvar.
(counsel-describe-variable): Update the call, require match, use
`counsel-describe-symbol-history'.
(counsel-describe-function): Update the call, require match, use
`counsel-describe-symbol-history'.
* ivy-test.el: Update tests, since zero and one length input doesn't
return immediately any more.
Re #46
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--filter): Update prefix optimization
* ivy.el (ivy--filter): Don't use prefix optimization when the input
contains "\".
2015-04-22 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Add a note on outdated ivy package
Fixes #51
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--filter): Try directory expansion with "/"
* ivy.el (ivy--filter): If candidate is "x" and completing file names,
check if "x/" is among the candidates, and if so, set `ivy--index'
accordingly.
Re #50
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
Fix the default-directory for `counsel-git-grep'
* counsel.el (counsel--git-grep-dir): New defvar.
(counsel-git-grep-count): Update.
(counsel-git-grep-function): Update.
(counsel-git-grep): Update.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
Add a way to exit ignoring the candidates
* ivy.el (ivy-immediate-done): New commad, currently unbound. Exit the
minibuffer, ignoring the candidates. Solves the same problem as
"C-f" in `ido-mode'.
(ivy-alt-done): With a prefix arg, e.g. "C-u C-j", forward to
`ivy-immediate-done'.
Re #50
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Don't add the `default-directory'
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Use initial-input when completing files
* ivy.el (ivy-read): Unless `require-match', add `initial-input' to the
collection. This is important e.g. for `dired-dwim-target'.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--add-overlays): Make bounds optional
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep-count): Ignore case
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
Fix describe-function / -variable "C-." interaction
* counsel.el (counsel-describe-variable): Don't describe variable if
jump-to-symbol action was chosen.
(counsel-describe-function): Don't describe variable if
jump-to-symbol action was chosen.
I should handle this more gracefully if multiple actions become a
pattern.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Add awesome swiper highlighting to git grep
* counsel.el (swiper): Require.
(counsel-git-grep-function): Use `swiper--add-overlays'. Remember to set
`swiper--window', and call `swiper--cleanup'. Use `ivy--regex' in all
cases to build the regex.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--regex): Add optional greedy arg
* ivy.el (ivy--regex): When optional greedy arg is t, be greedy. Don't
wrap a sub-expr in a group if it's already a group, for instance
"forward \(char\|list\)".
Greedy is needed, for instance, for "git grep", which doesn't work great
with non-greedy regex.
Re #47
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--add-overlays): Update arglist
* swiper.el (swiper--update-input-ivy): Update.
(swiper--add-overlays): Take only the regexp as the argument. Figure out
the bounds by itself.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Don't directory-expand glob filename
* ivy.el (ivy-done): Don't directory-expand if there's a star in the
file name.
This change fixes the behavior of `rgrep`. It can't handle the case of
e.g. /foo/bar/\*.el, but handles \*.el fine.
Re #45
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
Add an option to call the completion action without exiting
* ivy.el (ivy--persistent-action): New defvar. This is a lambda that the
caller sets if the caller has a plan for persistent actions.
(ivy-next-line-and-call): Add and bind to "C-M-n". Identical to "C-n",
except calls `ivy--persistent-action' when it's not nil. Add and bind to
"C-M-p". Identical to "C-p", except calls `ivy--persistent-action' when
it's not nil.
(ivy-window): New defvar.
(ivy-read): Store `ivy-window'.
* counsel.el (counsel-git-grep): Use `ivy--persistent-action'.
For `counsel-git-grep', as an example, it's possible to move to the
matched place without exiting the completion with "C-M-n" and "C-M-p".
This is a nice advantage, since it gives a full context to each one-line
git grep match.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
Fix double-sorting for file names
* ivy.el (ivy--sorted-files): Update.
(ivy-read): Update.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--sorted-files): Avoid returning an empty list
Fixes #49
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
Allow to customize the sorting methods
* ivy.el (ivy-sort-functions-alist): New defvar, stores sorting
functions for various function collection types.
(ivy-sort-file-function): Remove, merge into `ivy-sort-functions-alist'.
(ivy-sort-max-size): Don't sort candidate lists larger than this size.
(ivy--sorted-files): Update.
(ivy-read): Add an argument SORT. When it's t, sort the candidates
according to `ivy-sort-functions-alist'. It's assumed that if
COLLECTION is a function it's OK to `cl-sort' it without making a copy.
(ivy-completing-read): Call with SORT t.
* counsel.el (counsel-describe-variable): Call with SORT t.
(counsel-describe-function): Call with SORT t.
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--regex): Switch to non-greedy ".*?" joiner
Fixes #47
2015-04-21 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Expand file name for empty text
Fixes #45
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
`counsel-git-grep' can now handle huge git repos
* counsel.el (counsel-git-grep-count): Return a number instead of a
string. Apply `ivy--regex' on the input.
(counsel--git-grep-count): New defvar.
(counsel-git-grep-function): If the repo has >20000 lines, use `head'
5000 instead, but still display the true amount of matches.
(counsel-git-grep): Set `ivy--dynamic-function'.
(counsel-locate-function): Update.
* ivy.el (ivy--dynamic-function): New defvar. When this isn't nil, it
will be called to get a new batch of candidates in case the `ivy-text'
was changed.
(ivy--full-length): The true candidates length in case of `head'
shenanigans.
(ivy--old-text): Store the old text for when `ivy--dynamic-function' was
called last.
(ivy--insert-prompt): Update.
(ivy--exhibit): Don't do filtering for non-nil `ivy--dynamic-function' -
let the caller (usually a shell tool) do the filtering.
(ivy--insert-minibuffer): New defun, created from a part of
`ivy--exhibit'.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Use cl-plusp instead of plusp
* ivy.el (cl-lib): Add require.
(ivy-alt-done): Update.
Re #43
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Add a dynamic counsel-locate
* counsel.el (counsel-locate-function): New defun.
(counsel-locate): New defun.
* ivy.el (ivy--dynamic-function): New defvar.
(ivy--exhibit): Re-compute candidates use `ivy--dynamic-function' if
it's non-nil.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Split `ivy-completions' into `ivy--filter' and `ivy--format'
* ivy.el (ivy--exhibit): Update.
(ivy-completions): Remove.
(ivy--filter): New defun.
(ivy--format): New defun.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep-count): Add defun
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Fix compilation warnings
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Bind arrows
* ivy.el (ivy-minibuffer-map): Update.
Re #40
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Add an optimization to speed up matching
* ivy.el (ivy-completions): Update.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Bump version
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Still expand "./" though
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Don't expand the default when completing file names
* ivy.el (ivy-done): Update.
This affects e.g. `rgrep': "\*.el" as the default will work, but
"foo/\*.el" won't.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Propertize directories with ivy-subdir face
* ivy.el (ivy-subdir): New defface.
(ivy-completions): Update.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Speed up the default file sorting even more
* ivy.el (ivy--sorted-files): Use `string-match-p' instead of
`file-directory-p'.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Speed up the default file sorting
* ivy.el (ivy-sort-file-function-default): Update.
(ivy--sorted-files): Update.
Turns out that calling `file-directory-p' in `cl-sort' is too expensive.
So when `ivy-sort-file-function' is `ivy-sort-file-function-default',
propertize all strings with whether they are directories or not.
When `ivy-sort-file-function' is something different, e.g.
`string-lessp', don't do propertizing since it also can be slow.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy--preselect-index): Give priority to perfect match
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Allow "C-." to jump to current symbol definition
* counsel.el (counsel-describe-map): New defvar.
(counsel-find-symbol): New defun.
(counsel--find-symbol): New defun - jump to definition of function or
symbol or library.
(counsel-describe-variable): Use `counsel-describe-map'.
(counsel-describe-function): Use `counsel-describe-map'.
2015-04-20 Oleh Krehel <ohwoeowho@gmail.com>
Allow to customize the file sorting order
* ivy.el (ivy-sort-file-function-default): New defun.
(ivy-sort-file-function): New defvar. Set this to your preference.
(ivy--sorted-files): Update.
Fixes #38
2015-04-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-done): Update for non-matching file names
* ivy.el (ivy-done): When `ivy--directory' is non-nil, accept input
anyway.
Fixes #39
2015-04-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completions): Fix an optimization
2015-04-19 Oleh Krehel <ohwoeowho@gmail.com>
Add a matching optimization
* ivy.el (ivy-completions): When the new regex `re' is a contains the
old regex `ivy--old-re', it must be true that all candidates that
match `re' are contained inside all candidates that match
`ivy--old-re', i.e. the pre-computed in the last step
`ivy--old-cands'.
This should speed up completion for large (~100k) amount of candidates,
for the particular case of regex simply being extended.
2015-04-19 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (counsel-git-grep): Fix the default-directory
2015-04-19 Oleh Krehel <ohwoeowho@gmail.com>
Add a command to grep the current git repo
* counsel.el (counsel-git-grep-function): New defun.
(counsel-git-grep): New command.
2015-04-19 Oleh Krehel <ohwoeowho@gmail.com>
Add "C-v" and "M-v" scrolling
* ivy.el (ivy-minibuffer-map): Update.
(ivy-scroll-up-command): New defun.
(ivy-scroll-down-command): New defun.
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-alt-done): Update for 0 candidates
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Add a work-around for window-start not being current
* swiper.el (swiper--update-input-ivy): Update.
This results in double the window-height amount of lines being
heightlighted, instead of just window-height. But at least it doesn't
happen that some candidates within the current window aren't highlighted
since they're beyond the outdated window-start and window-end.
An alternative would be to use `redisplay' to update `window-start' and
`window-end', but that causes excessive blinking.
* ivy-test.el: Add a require.
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Move all defvar before their first use
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
Add ivy key bindings to "C-h m"
* ivy.el (ivy-mode): Update.
Re #37
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
Allow to customize the dotted directories
* ivy.el (ivy-extra-directories): New defcustom.
(ivy--sorted-files): Update.
Re #38
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
Add a work-around for completing topics in the info dir
* ivy.el (ivy-read): Weirdly, the topic names need to be wrapped in
"(...)". Also, `all-completions' returns nothing for "", but returns
stuff for "(". Also, `all-completions' for "(" returns plenty of
duplicates.
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude dired-mode
2015-04-18 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Switch from `with-no-warnings' to `declare-function'
2015-04-17 Oleh Krehel <ohwoeowho@gmail.com>
Allow to complete dir with "/" if it's a perfect match
* ivy.el (ivy--exhibit): Update.
2015-04-17 Oleh Krehel <ohwoeowho@gmail.com>
Add sorting for file completion
* ivy.el (ivy-alt-done): Exit with current directory when on first
element, which is always "./", thanks to sorting.
(ivy--cd): Update.
(ivy--sorted-files): New defun for sorting file names. "./" and "../"
are always the first, then come the directories, then the files.
(ivy-read): Update.
2015-04-17 Oleh Krehel <ohwoeowho@gmail.com>
Add "/" and "~" shortcuts while finding files
* ivy.el (ivy--cd): New defun.
(ivy-backward-delete-char): Use `ivy--cd'.
(ivy--exhibit): When the file completion text ends in "/" or "~", move
to those dirs.
2015-04-17 Oleh Krehel <ohwoeowho@gmail.com>
Add work-around for DEF not being in COLLECTION for `completing-read'
* ivy.el (ivy-read): Update.
2015-04-17 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Remove dependency on ivy
ivy.el now comes together with swiper.
Re #36.
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
Ivy-mode now works better with `find-file'
* ivy.el (ivy-minibuffer-map): Bind "C-j" to visit a directory without
exiting the minibuffer.
(ivy--directory): New defvar.
(ivy-done): Expand file names.
(ivy-alt-done): New defun.
(ivy-backward-delete-char): When completing file names, visit the parent
dir.
(ivy-read): Add the predicate argument, similar to `completing-read'.
All code that uses `ivy-read' needs to be updated. Move the
collection/predicate stuff here.
(ivy-completing-read): Update.
(ivy--insert-prompt): Display the current directory when completing file
names.
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completing-read): Rely more on `all-completions'
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
Add require-match functionality
* ivy.el (ivy-require-match): New defvar.
(ivy-done): When nothing matches, and `ivy-require-match' isn't t, use
the current text anyway.
(ivy-completing-read): Update.
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
Add function as collection support for ivy-mode
* ivy.el (ivy-completing-read): Update. Ignore initial input for
function collection type.
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
Don't try to fontify huge buffers
* swiper.el (swiper-font-lock-ensure): Update.
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
Remove ido-mode shenanigans
Combining `ido-mode' and `ivy-read' seemed to cause a problem at some
stage. Can't reproduce now, so I'll just remove this for a while.
2015-04-16 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Bump version
2015-04-13 Oleh Krehel <ohwoeowho@gmail.com>
Fix thing-at-point in describe-function and -variable
* counsel.el (counsel-describe-variable): Update.
(counsel-describe-function): Update.
2015-04-10 Oleh Krehel <ohwoeowho@gmail.com>
Update sorting order, make sure that perfect match is selected
ivy.el (ivy-completions): Update.
When the regex matches perfectly, select it.
2015-04-09 Oleh Krehel <ohwoeowho@gmail.com>
Add ivy-mode
* ivy.el (ivy-completing-read): New defun.
(ivy-mode): New global minor mode.
2015-04-09 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude org-agenda-mode
Re #19
2015-04-09 Oleh Krehel <ohwoeowho@gmail.com>
Add four more commands
* counsel.el (counsel-describe-variable): New defun.
(counsel-describe-function): New defun.
(counsel-info-lookup-symbol): New defun.
(counsel-unicode-char): New defun.
* Makefile: Compile counsel.el as well.
2015-04-03 Steve Purcell <steve@sanityinc.com>
Fix invalid package header line
2015-04-03 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Fixup prefixes
2015-04-03 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el (couns-clj): Add with-no-warnings
2015-04-02 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Update comments
2015-03-31 Oleh Krehel <ohwoeowho@gmail.com>
Fix `ivy-backward-delete-char-function'
* ivy.el (ivy-on-del-error-function): Rename from
`ivy-backward-delete-char-function'.
(ivy-backward-delete-char): Don't use eval.
2015-03-30 Kevin <nivekuil@gmail.com>
Add defcustom for ivy-backward-delete-char
2015-03-30 Oleh Krehel <ohwoeowho@gmail.com>
Allow duplicate candidates in `ivy-read'
* ivy.el (ivy-completions): Use `eq' instead of `equal' in
`cl-position'.
2015-03-27 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-map): Bind "C-l" to recenter
* swiper.el (swiper-map): Update.
(swiper-recenter-top-bottom): New defun.
(swiper--update-input-ivy): Use `<=' in order for `recenter-top-bottom'
to work.
2015-03-26 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-query-replace): Enable recursive minibuffers
* swiper.el (swiper-query-replace): Update.
Fixes #31.
2015-03-26 Oleh Krehel <ohwoeowho@gmail.com>
Default ARG to 1 for arrows
* ivy.el (ivy-next-line): Update.
(ivy-previous-line): Update.
2015-03-26 Oleh Krehel <ohwoeowho@gmail.com>
Add numeric arguments to arrows
* ivy.el (ivy-next-line): Update.
(ivy-next-line-or-history): Update.
(ivy-previous-line): Update.
(ivy-previous-line-or-history): Update.
(ivy-read): Update doc.
2015-03-26 Oleh Krehel <ohwoeowho@gmail.com>
"C-s" should forward to "C-n" etc
* ivy.el (ivy-next-line-or-history): Update.
(ivy-previous-line-or-history): Update.
2015-03-25 Oleh Krehel <ohwoeowho@gmail.com>
Allow to cancel "M-q" with "C-g"
swiper.el (swiper-query-replace): If the TO argument to
`perform-replace' isn't read, don't exit minibuffer.
If the user called `swiper-query-replace' and isn't happy with the
current input being the FROM arg of `perform-replace', it's possible to
cancel with "C-g", and edit the input once again.
2015-03-25 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-query-replace): Call only in minibuffer
2015-03-25 Oleh Krehel <ohwoeowho@gmail.com>
Add swiper-query-replace
* ivy.el (ivy-read): Update signature - a keymap is also accepted and
the argument order has changed.
The keymap is composed with `ivy-minibuffer-map'.
Update for `ivy--action'.
(ivy--action): New defvar. If a function sets it, `ivy-read' will call
it.
* swiper.el (swiper-map): New defvar.
(swiper-query-replace): New defun.
(swiper--ivy): Use swiper-map in the call to `ivy-read'.
* counsel.el (couns-git): Fix one empty candidate.
2015-03-25 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Ignore gnus modes
2015-03-23 Oleh Krehel <ohwoeowho@gmail.com>
Ensure that inserted candidates don't have read-only property
* ivy.el (ivy-completions): Update.
Fixes #28.
The issue was that the whole text of erc buffer has (read-only t)
property. That means if I copy some of those strings and insert them
into the minibuffer, I can't delete them unless I set
`inhibit-read-only' to t. Instead, I set the read-only to nil for the
string that I insert. It doesn't affect the original buffer string.
2015-03-23 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Omit erc-mode
Re #28
2015-03-22 Oleh Krehel <ohwoeowho@gmail.com>
Update Copyright
2015-03-22 Oleh Krehel <ohwoeowho@gmail.com>
Move swiper-helm to another repo
2015-03-22 John Mastro <john.b.mastro@gmail.com>
ivy.el (ivy-wrap): New defcustom
(ivy-next-line): Wrap around if `ivy-wrap' is non-nil
(ivy-next-line-or-history): Wrap around if `ivy-wrap' is non-nil
(ivy-previous-line): Wrap around if `ivy-wrap' is non-nil
(ivy-previous-line-or-history): Wrap around if `ivy-wrap' is non-nil
2015-03-22 John Mastro <john.b.mastro@gmail.com>
swiper.el (swiper-min-highlight): New defcustom
(swiper--add-overlays): Use `swiper-min-highlight'
2015-03-22 John Mastro <john.b.mastro@gmail.com>
swiper.el (swiper--init): Set `swiper--opoint'
(swiper): Don't set `swiper--opoint'
2015-03-21 Oleh Krehel <ohwoeowho@gmail.com>
Update "C-n" and "C-p" bindings
* ivy.el (ivy-next-line): Don't touch history.
(ivy-next-line-or-history): Select previous history element if there's
no input.
(ivy-previous-line): Don't touch history.
(ivy-previous-line-or-history): Select previous history element if
there's no input.
Re #23
2015-03-21 Oleh Krehel <ohwoeowho@gmail.com>
Use `font-lock-append-text-property' to non-destructively modify a
string
* ivy.el (ivy--add-face): Improve.
`font-lock-append-text-property' non-destructively changes properties in
a string, which means if a string was copied from another and modified,
the original will not be changed. In this way, it's better than
`add-face-text-property'; and still better than `propertize' that simply
erases all properties before applying.
Fixes #22
2015-03-21 Steve Purcell <steve@sanityinc.com>
Fix invalid package header line
2015-03-21 Oleh Krehel <ohwoeowho@gmail.com>
Add a custom `ivy-count-format'
* ivy.el (ivy-count-format): New defcustom.
(ivy-read): Use `ivy-count-format', unless PROMPT already has a %d spec.
Set `ivy-count-format' to nil or "" if you don't want to see an
auto-updating match count in the minibuffer.
Re #23.
2015-03-21 Oleh Krehel <ohwoeowho@gmail.com>
swiper-helm.el: Fix typo
2015-03-21 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Remove the helm bits
They are now in swiper-helm.el. Available for install separately from
MELPA.
2015-03-20 Oleh Krehel <ohwoeowho@gmail.com>
swiper-helm.el: Copy all helm stuff here
2015-03-20 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-completions): Simplify
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Remove while-no-input
This will speed up the updates. But it might slow down somewhere else.
The issue was that "M-DEL" did not cause an update.
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Add build status
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Allow for format-style PROMPT
* ivy.el (ivy-read): When given a prompt of e.g. "%d pattern: ", update
the number of candidates in the prompt.
(ivy--prompt): New defvar.
(ivy--insert-prompt): New defun.
(ivy--exhibit): Call `ivy--insert-prompt'.
(ivy-completions): Fix a bug of `ivy--index' becoming -1 when the number
of matches becomes zero.
* swiper.el (swiper--format-spec): New defvar.
(swiper--candidates): Update.
(swiper--ivy): Use `swiper--format-spec' to make the prompt.
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Change index to preselect
* ivy.el (ivy-read): Update signature. Instead of giving the integer
index of what to preselect, give a string to preselect.
(ivy--preselect-index): New defun.
* swiper.el (swiper--index-at-point): Rename to `ivy--preselect-index'.
(swiper--ivy): Simplify.
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy-test.el: Add testing
* Makefile: Add a test and compile target.
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Return nil when there is no match
* ivy.el (ivy-done): Update.
(ivy-read): Update.
2015-03-19 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Silence a few compilation warnings
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Fix non-matching lines issue with initial-input
* swiper.el (swiper--index-at-point): New defun.
(swiper--ivy): Update.
Fixes #20.
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
Add isearch-like history behavior
* ivy.el (ivy-next-line): Select previous history element for empty
input.
(ivy-previous-line): Select previous history element for empty input.
(ivy-previous-history-element): New defun.
(ivy-next-history-element): New defun.
Re #21
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Bring last history candidate to front
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Add git file completion
* counsel.el (couns-git): Add.
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--helm): Require helm-match-plugin
This seems to be necessary after a recent helm update.
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Fix ivy-history recording the full text instead of input
* ivy.el (ivy-read): Update.
Fixes #21
2015-03-18 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper-font-lock-ensure): Exclude a few modes
Re #19
2015-03-17 Oleh Krehel <ohwoeowho@gmail.com>
Work around magit highlighting problem
* swiper.el (swiper-font-lock-ensure): Update.
Re #19
2015-03-17 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--opoint): Fix bad defvar
2015-03-17 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Add Clojure completion at point
2015-03-17 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Fix error for empty buffer
* swiper.el (swiper--candidates): Update.
(swiper--action): Update.
Fixes #17.
2015-03-16 killdash9 <killdash9>
Need to check value of variable
2015-03-16 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Clean up overlays better on "C-g"
* swiper.el (swiper--cleanup): Improve.
Fixes #11.
2015-03-16 Oleh Krehel <ohwoeowho@gmail.com>
Open invisible overlays using isearch
* swiper.el (swiper--update-input-ivy): Improve.
Fixes #11.
2015-03-16 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-read): Return immediately for less than 2 candidates
2015-03-16 Oleh Krehel <ohwoeowho@gmail.com>
counsel.el: Add
2015-03-15 Oleh Krehel <ohwoeowho@gmail.com>
Truncate candidates to window width in the minibuffer
* ivy.el (ivy-completions): Update.
2015-03-15 Oleh Krehel <ohwoeowho@gmail.com>
Add some rudimentary history handling
* ivy.el (ivy-minibuffer-map): Bind "M-n", "M-p", and "C-g".
(ivy-history): New defvar.
(ivy-read): Update.
(ivy--minibuffer-setup): Offer thing-at-point for "M-n".
(ivy--default): New defvar.
Re #16.
2015-03-15 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el (ivy-previous-line): Change to `cl-decf'
Re #15
2015-03-15 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Make ivy the default back end
2015-03-15 Oleh Krehel <ohwoeowho@gmail.com>
Don't recenter unless necessary
* swiper.el (swiper--update-input-ivy): Update.
2015-03-15 Oleh Krehel <ohwoeowho@gmail.com>
Add anchoring
* ivy.el (ivy-read): Add optional argument INDEX. It's the index of
initally selected entry.
(ivy-completions): Update.
* swiper.el (swiper--ivy): Call `ivy-read' with `line-number-at-pos'.
Fixes #16
2015-03-15 Xavier Garrido <xavier.garrido@gmail.com>
Fix use of cl-incf
* ivy.el (ivy-next-line): Update.
Fixes #15
2015-03-14 Oleh Krehel <ohwoeowho@gmail.com>
Require delsel for `minibuffer-keyboard-quit'
* ivy.el (ivy-backward-delete-char): Update.
Fixes #14.
2015-03-14 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Save position before last search
* swiper.el (swiper--ivy): Forward to `swiper--action'.
(swiper--helm): Use `swiper--action-helm'.
(swiper--action-helm): New defun.
(swiper--action): Generalize, use push-mark, similarly to `isearch'.
Fixes #12.
2015-03-14 Oleh Krehel <ohwoeowho@gmail.com>
Reveal invisible overlays
* swiper.el (swiper--ivy): Update.
(swiper--ensure-visible): New defun.
(swiper--action): Update.
Fixes #11.
2015-03-14 Steve Purcell <steve@sanityinc.com>
Inherit standard faces by default
Every time a new custom face definition is created, it breaks every
existing theme. Better, then, to inherit standard faces by default.
This commit has the side benefit of making the faces defined here
legible in themes with dark backgrounds.
2015-03-14 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Restore original point on canceling
* swiper.el (swiper--opoint): New defvar.
(swiper): Update.
(swiper--ivy): Update.
Fixes #9.
2015-03-14 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Add `ivy-exit'
* ivy.el (ivy-done): Update.
(ivy-read): Update.
(ivy-exit): New defvar.
2015-03-14 Oleh Krehel <ohwoeowho@gmail.com>
Add initial-input optional argument
* swiper.el (swiper): Update.
(swiper--ivy): Update.
(swiper--helm): Update.
* ivy.el (ivy-read): Update.
Fixes #8.
2015-03-13 Oleh Krehel <ohwoeowho@gmail.com>
Account for zero-length regex matches
* swiper.el (swiper--add-overlays): Update.
Fixes #6.
2015-03-13 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el: Use `with-selected-window' instead of `with-current-buffer'
* swiper.el (swiper--buffer): Remove.
(swiper--init): Update.
(swiper--update-input-helm): Update.
(swiper--update-input-ivy): Update.
(swiper--update-sel): Update.
2015-03-13 Oleh Krehel <ohwoeowho@gmail.com>
ivy.el: Improve the highlighting in the minibuffer
* ivy.el (ivy--add-face): Use `add-face-text-property' if it's
available. You need to upgrade to Emacs 24.4 to get this feature.
(ivy-completions): Use `ivy--add-face'.
2015-03-13 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Update
2015-03-13 Oleh Krehel <ohwoeowho@gmail.com>
Update dependencies.
* ivy.el: Depend on emacs "24.1".
* swiper.el: Depend on ivy "0.1.0".
2015-03-13 Oleh Krehel <ohwoeowho@gmail.com>
Add `ivy' back end
* ivy.el: New completion back end.
* swiper.el: Package doesn't depend on `helm'.
(ivy): Depend on `ivy'.
(swiper-completion-method): New defcustom.
(swiper--window): New var.
(swiper--helm-keymap): Rename from `swiper--keymap'.
(swiper): Change to a dispatch.
(swiper--init): New defun.
(swiper--ivy): New command.
(swiper--helm): New command.
(swiper--cleanup): New defun.
(swiper--update-input-helm): Rename from `swiper--update-input'.
(swiper--update-input-ivy): New defun.
(swiper--add-overlays): New defun.
(swiper--update-sel): Update.
(swiper--subexps):
(swiper--regex-hash):
(swiper--regex): Move to ivy.
(swiper--action): Update.
2015-03-11 killdash9 <killdash9>
familiar isearch key bindings while helm is active
2015-03-11 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--regex): Update signature
2015-03-11 Syohei YOSHIDA <syohex@gmail.com>
Use cl-lib macros instead of cl.el
2015-03-11 Syohei YOSHIDA <syohex@gmail.com>
add autoload cookie for lazy loading
2015-03-11 Oleh Krehel <ohwoeowho@gmail.com>
Add dependency on emacs 24.1
2015-03-10 Oleh Krehel <ohwoeowho@gmail.com>
Add compatibility alias for `font-lock-ensure'
* swiper.el (swiper-font-lock-ensure): Add.
Fixes #1.
2015-03-10 Oleh Krehel <ohwoeowho@gmail.com>
README.md: Add
2015-03-10 Oleh Krehel <ohwoeowho@gmail.com>
swiper.el (swiper--regex): Zero groups without space
* swiper.el (swiper--update-input): Update the face order accordingly.
2015-03-10 Oleh Krehel <ohwoeowho@gmail.com>
Update call to `font-lock-ensure'
* swiper.el (swiper--candidates): `font-lock-ensure' takes no arguments
in 24.4.1.
2015-03-09 Oleh Krehel <ohwoeowho@gmail.com>
Initial import