Commit Graph

321 Commits

Author SHA1 Message Date
Felix Endres
08dcd814a9 Improve :BCommits Preview (#1525)
Reduce the preview of :BCommits to the relevant part, when used with visual selection.
Only show the part of the diff that belongs to the selection.

That makes it very easy to quickly follow the evolution of a code block.
2024-05-23 12:56:13 +09:00
Junegunn Choi
71b0e0fb94 [Changes] Fix 'List index out of range: 0' error
Ignore change item that points to a non-existent line
2024-05-17 21:48:08 +09:00
Junegunn Choi
a50c2640b9 Fix Commands and Windows on Windows
Use tab character with --tabstop=1 instead of non-breaking space

Fix #1542
2024-05-14 17:39:29 +09:00
Junegunn Choi
99093bd103 [RG] Use 'cd .' as the dummy command on Windows 2024-05-08 00:06:01 +09:00
Junegunn Choi
269c08641e [RG] Do not append '|| :' on Windows 2024-04-29 00:09:13 +09:00
Junegunn Choi
503bb6fe9c [Tags] Require readtags from universal-ctags
Close #1540
2024-04-25 20:03:30 +09:00
Junegunn Choi
45d96c9cb1 Do not omit argument to bufnr() for Vim 8 compatibility
bufnr() requires an argument in Vim 8.0

Close #1521
2024-03-22 11:17:34 +09:00
Junegunn Choi
0b3e015ad8 [Tags] Use 'readtags' if query string is given
This pre-filtering is critical when working with large tag files.

'readtags' can perform a binary search for the given prefix string
but fzf has to load the entire file into memory just to start searching.

Close #1529
Close #1524
2024-03-11 12:00:49 +09:00
Junegunn Choi
f6cb5b1789 [Helptags] Do not use 'Fatal'
Fix #1506
2024-01-08 16:43:32 +09:00
Junegunn Choi
1e054c1d07 [History] Fix error when there are no entries
Fix #1512
2023-10-27 11:43:42 +09:00
Junegunn Choi
d1016dbd7c [fzf#vim#buffers] Allow users to pass a custom list of buffer numbers
Introducing a global configuration variable may seem easier but this
method is more flexible in that it allows you to define multiple
variations of the command without having to repeatedly setting and
unsetting the variable.

  function! MyBuffers()
    return filter(range(1, bufnr('$')), 'buflisted(v:val) && getbufvar(v:val, "&filetype") != "qf"')
  endfunction

  command! -bar -bang Buffers call fzf#vim#buffers(MyBuffers(), fzf#vim#with_preview({'placeholder': '{1}'}), <bang>0)

Close #831
Close #393
2023-10-14 23:57:35 +09:00
Junegunn Choi
fe362d413a Restore the behavior of custom actions on Ag/Rg/Tags/Commits
Fix #1505
2023-09-16 19:36:06 +09:00
Junegunn Choi
937f430ce3 Add :Changes command
Close #1478
Close #1479
2023-09-14 22:45:00 +09:00
jiz4oh
587f55bf50 Use fzf#shellescape instead (#1503) 2023-09-07 11:31:15 +09:00
Junegunn Choi
7ba5be32bc [Buffers] Do not preview '[No Name]' 2023-09-06 18:26:23 +09:00
Junegunn Choi
2c501dc5a2 [Windows] Add preview
Close #1487
2023-09-06 18:26:23 +09:00
Nikita Kouevda
19dec6c038 Use s:conf for preview_bash and files_options (#1502)
Follow-up to 832a090870.
2023-09-06 11:14:08 +09:00
Junegunn Choi
5c218e982d [Lines] Allow multiple selections 2023-09-06 00:46:24 +09:00
Junegunn Choi
832a090870 Add option to use location list instead of quickfix list
Close #432
Close #448
Close #846
Close #1095
Close #1500
2023-09-06 00:46:24 +09:00
Frederick Zhang
811f34b70b [[B]Commits] Bump Git commit hash length limit to 40 (#1495)
When working in large repositories, 9 characters can be ambiguous.
Bumping it to 40, which is the length of SHA-1. (The algorithm is not
that relevant though. Even when SHA-256 takes over, 40 characters should
still be enough for most repositories.)
2023-08-10 20:30:57 +09:00
Edwin Steiner
1dcdb21db6 [Helptags] Remove dependencies of grep and sort (#1482)
* Remove dependency of fzf#vim#helptags on grep.

The grep command was used here only to dump file contents prefixed
with the filename and a colon. Since the function generates a temporary
Perl script anyway, it is simpler to do this directly in the Perl
script. This removes the dependency on grep and makes it easier to get
:Helptags to work on Windows.

A subsequent commit will also move the sorting of the helptags into the
Perl script. I did not do it in this commit, since the OS's "sort"
command can give a different sort order than Perl's sort function,
so I'm not sure what is preferred here.

Note: 'use autodie' is recommended over 'use Fatal' but the autodie
module has only been in Perl core since v5.10.1 (2009-08-22) while
Fatal is in core since 1996. The three-argument open requires v5.6
(2000).

* Remove dependency of fzf#vim#helptags on external sort command.

This moves the sorting of helptags into the generated Perl script and
thereby removes the dependency on an external "sort" command.

Note that Perl's sort function used here may give a different sort
order than the OS's sort command. (It does so for me on Windows but
I actually like Perl's ASCII sort order better, anyway.)

---------

Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2023-06-09 16:46:50 +09:00
Kevin Ushey
5d87ac1fe8 Add :Jumps (#710)
Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2023-06-04 16:21:37 +09:00
Junegunn Choi
fd812b5710 [fzf#vim#grep[2]] Deprecate has_column argument
The boolean value tells the function if the output of the command
contains column numbers, but we can just see the selected lines if they
contain column numbers.

The argument is now removed from the documentation, and will be silently
ignored for backward compatibility.

Close #1480
2023-06-04 15:49:16 +09:00
Junegunn Choi
87b60bb133 Add :RG command and fzf#vim#grep2 function 2023-06-04 15:27:45 +09:00
Junegunn Choi
dc71692255 Update documentation and comments 2023-01-27 10:42:13 +09:00
Julian Prein
ca542801a1 [[B]Commits] Support arguments for git-log (#1455)
* [[B]Commits] Support arguments for git-log

Add support for command arguments that are passed to git-log (e.g.
:Commits -S foo -3).

The place of insertion is relevant. Generally the arguments should come
at the end to overwrite existing flags if necessary, but need to come
before the pathspec (i.e. `fzf#shellescape(current)`) in BCommits.

* [[B]Commits] Make sure all positional arguments are optional

Test cases:

    " With default options
    %call fzf#vim#commits()

    " Full screen
    %call fzf#vim#commits(1)

    " Not full screen
    %call fzf#vim#commits(0)

    " With extra fzf options
    %call fzf#vim#commits({ 'up': '50%', 'options': '--no-color' })

    " With extra fzf options (with preview) and in full screen
    %call fzf#vim#commits(fzf#vim#with_preview({ 'options': '--no-color', 'placeholder': '' }), 1)

    " With extra git log options
    %call fzf#vim#commits('-S foo')

    " With extra git log options in full screen
    %call fzf#vim#commits('-S foo', 1)

    " With extra git log options and fzf options
    %call fzf#vim#commits('-S foo', { 'options': '--no-color' })

    " In full-screen
    %call fzf#vim#commits('-S foo', { 'options': '--no-color' }, 1)

    " Command form
    Commits
    Commits!
    Commits -S foo
    Commits! -S foo

* [Commits] Enable file completion for arguments

This gets handy when BCommits is too narrow (e.g. multiple files or a
folder is specified).

Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2023-01-27 10:40:32 +09:00
psyngw
bdf48c282a Fix: Windows preview window logic, including git diff preview (#1452)
Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2023-01-16 13:41:07 +09:00
ksmai
0f03107bc9 fix: GFiles is ignoring args (#1447)
The commit linked below removed `a:args` from the `git ls-files` command, making it
unable to take any options like `--cached`, `--others` and
`--exclude-standard`

531dd67350
2022-12-31 12:41:48 +09:00
Junegunn Choi
fd7fab77b2 [GFiles] Use ls-files --deduplicate only on git 2.31 or above
Close #1446
2022-12-24 10:34:55 +09:00
Nathan Thomas
7434543270 Add support for nushell (#1300)
Nushell doesn't allow programs surrounded in quotes to be executed.
2022-12-22 17:37:50 +09:00
Marc Mezzarobba
531dd67350 Make :GFiles work with "unusual" filenames (#1200)
git ls-files quotes file names containing "unusual" (non-ASCII?)
characters by default, breaking :GFiles

Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2022-12-22 17:31:38 +09:00
JohanChane
9ceac71802 Fix ctags language force for C++ (#1425)
Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
2022-09-22 17:30:41 +09:00
Junegunn Choi
c491d702b7 [GFiles] Fix opening files from subdirectory
https://github.com/junegunn/fzf.vim/pull/1290#issuecomment-1208759166
2022-08-09 13:47:50 +09:00
Junegunn Choi
c6b59d8ad7 [GFiles] fzf#vim#gitfiles should respect 'dir'
https://github.com/junegunn/fzf.vim/pull/1290#issuecomment-1207832597
2022-08-08 23:47:20 +09:00
Frederick Zhang
2f3e29fc37 Change git working directory according to the current buffer (#1290)
* Commits
* BCommits
* GFiles
2022-08-03 22:24:13 +09:00
Junegunn Choi
a4617a7291 Use ASCII non-breaking space 2022-08-02 13:56:15 +09:00
Emilv2
c311c0a95f [[B]Commits] Show current file first in preview (#1402)
Close #802
2022-06-28 14:33:15 +09:00
jiz4oh
b23e4bb8f8 [fzf#vim#complete#word] Respect &dictionary option (#1373) 2022-03-07 17:35:08 +09:00
Tomáš Janoušek
1f7bfa4007 [[B]Commits] Use --color=always with delta as well (#1362)
With some delta configurations (e.g. color-only = true, diff-highlight =
true), delta doesn't add its own coloring and keeps that from git diff,
and thus we need to turn that on.

Additionally, delta doesn't do its own detection of moved lines and
relies on git diff's colorMoved, which also needs enabling of colors.
2022-02-01 15:34:48 +09:00
Tomáš Janoušek
70541d2ee0 [Commands] Fix hit-enter/more-prompt with terminal buffer fzf (#1363)
Since 85ae745910,
fzf opens in a terminal buffer (in my setup) and that breaks commands
that end up showing the hit-enter or more prompt, such as :scriptnames
or :ALEInfo. No idea why those commands break (I tried to diagnose this
but gave up unfortunately), but executing them using feedkeys fixes
this.
2022-01-30 13:28:24 +09:00
Melandel
91332acb1c [GFiles?] Fix preview on windows (wsl bash + git_install_folder/usr/bash) (#1360)
* Fix preview on GFiles? on Windows+WSL
* Fix preview on GFiles? on Windows using gitInstallFolder\usr/bin\bash.exe

Co-authored-by: Minh-Tam TRAN <c_mtran@capsuletech.com>
Co-authored-by: Minh-Tam TRAN <minh-tam.tran@younited-credit.fr>
2022-01-24 18:02:50 +09:00
Philip Kannegaard Hayes
66cb8b8264 [Helptags] add preview window to :Helptags command (#1357)
+ In `fzf#vim#helptags`, we now also parse out the ex-command in the
  perl script so it's available for the preview (this is just an
  extra `\t(.*)` appended to the original regex).

+ Add the `--tag` placeholder to `:Helptags` with corresponding
  arguments.
2022-01-16 21:33:29 +09:00
magras
a4ce66d725 Set jump if the target is in the current file (#1195)
Adding a record to the jump list allows to go back to the cursor
position before jump with CTRL-O.

Fix #595
2021-10-08 17:26:38 +09:00
Junegunn Choi
e393108bfa Simplify version checking
Fix #1329
2021-09-29 20:22:47 +09:00
Kevin Lin
980cd07439 [fzf#vim#with_preview] Set --no-unicode if ambiwidth is 'double' (#1322)
Fix #1320

Append fzf argument `--no-unicode` when ambiwidth is `double` to keep the
preview window rendering correctly.
2021-09-03 06:46:54 +09:00
Ben
b1afeca8cc Unfold jumped line in grep sink (#1277) 2021-08-17 16:17:51 +09:00
Frederick Zhang
e34f6c129d [[B]Commits] Preserve window view (#1289)
In 161da95, [B]Commits were changed to range commands with -range=%, now
Vim jumps to the first line when these two commands are called directly
without specifying range.

This fixes it by saving window view in a temporary variable and
restoring it later. Reference: [1].

[1] https://vi.stackexchange.com/a/6037/33583
2021-05-25 13:30:41 +09:00
Junegunn Choi
161da95640 [[B]Commits] Allow tracking changes in the line range
Thanks to @anhpt379

Close #898
Close #1288
2021-05-24 19:38:51 +09:00
Junegunn Choi
d7211d0f61 Set delta width
Fix #1219
2021-05-24 16:29:31 +09:00
Stefan Kanev
a88311b222 Don't mutate args to fzf#vim#files() (#1282)
As the code was written before, if we do this:

   let s:opts = {
   \ 'window': {'width': 0.6, 'height': 0.6, 'relative': v:false},
   \ 'options': ['--layout=reverse', '--info=inline'],
   \}

   call fzf#vim#files('', s:opts, 0)

...then s:opts will get mutated by the call to fzf#vim#files, cloberring
any persistent configuration established this way.

Making a defensive copy solves the problem.
2021-05-09 13:45:33 +09:00