Code Monkey home page Code Monkey logo

wilder.nvim's People

Contributors

gcballesteros avatar gelguy avatar jityao avatar notpeelz avatar otakutyrant avatar ratheesh avatar rockyzhang24 avatar tsuyoshicho avatar z0rc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wilder.nvim's Issues

Neovim hangs when using Python fuzzy filters

Neovim sometimes becomes unresponsive when passing a large number of candidates (>10000) to the Python fuzzy filters (e.g. wilder#python_fuzzy_filter() or wilder#python_cpsm_filter().

Workarounds

  • Triggering a resize will make Neovim responsive again
  • Use wilder#lua_fzy_filter() which is a performant (but non-async) filter

How to disable foldcolumn for floating window

Hey,
first I like to thank you for this amazing plugin! ๐Ÿ™

I just did the setup and I'm super happy. Unfortunately there is this tiny cosmetic issue of a gap on the left side:

screenshot_1606000663

I suppose that it is the foldcolumn that is visible there. I'm using a recent NeoVim version, so the renderer should open a floating window. Do you have a specific filetype for the displayed buffer which would allow to disable the option there?

This is my configuration. So there should be actually no gap and in your screenshots I can't see such neither.

call wilder#set_option('modes', ['/', '?', ':'])
call wilder#set_option('renderer', wilder#float_renderer({
      \   'separator': ' โ€ข ',
      \   'separator_hl': 'Grey',
      \   'hl': 'GreenBold',
      \   'left': [
      \     {
      \       'value': [
      \         wilder#condition(
      \           { -> getcmdtype() ==# ':' },
      \           ' COMMAND ',
      \           ' SEARCH '
      \         ),
      \         '๎‚บ',
      \       ],
      \       'hl': 'RedBackground',
      \     },
      \     ' ',
      \   ],
      \   'right': [
      \     ' ',
      \     wilder#index({ 'hl': 'YellowBold' }),
      \   ],
      \ }))

Neovim Python Error when entering command mode

NVIM v0.4.2
Vi IMproved 8.1
python Version: 3.7.4
pynvim Version: 0.3.2

After starting up neovim and entering any of the supported command lines eg ':' '?' or '/' I get the following error. After the error goes away the auto suggestion works great. When using regular vim the issue does not persist so I assume its part of the neovim python integration. The error seems to becoming from autoload/wilder/main.vim on line 66. When I comment out the line the error doesn't appear. I have only added the minimal settings from the help file.

Error detected while processing function
3[1]
23_start[8]
E117: unknown function: _wilder_init

Keep up the great work on this awesome plugin!

Neovim incsearch highlighting tracking issue

incsearch highlighting disappears or is sometimes wrong

  • [All versions] Occurs when using wilder#popupmenu_renderer() when searching
  • [Neovim 0.5] Occurs for both wilder#popupmenu_renderer() and wilder#wildmenu_renderer() when searching and the current window view changes (e.g. moves due to incsearch)

See neovim/neovim#14064
See neovim/neovim#12495 (outdated)

A workaround is to use wilder#wildmenu_renderer({'mode': 'statusline'}) for searching.

Update: the statusline workaround doesn't work for Neovim 0.6 nightly.

Conflicts with other plugins that use "/"

specifically vim-visual-multi has a feature that allows you to multi select all matches of a certain regex. However with wilder.nvim enabled for '/' the vim-visual-multi regex search gets replaced by the wilder regex search.

Is there anyway to get these plugins to work together? ideally I could use wilder completions in the vim-visual-multi, but another way could be to have the wilder search only trigger when called from a certain keybinding (ie have a separate function to start wilder search)

Function call depth is higher than 'maxfuncdepth'

Was there a recent update to the plugin? Today I noticed that all of a sudden I am getting the error:

Error detected while processing function wilder#separator[1]..wilder#separator[1]..wilder#separator[1]..wilder#separator[1]..wilder#separat
or[1]..wilder#separator[1]..wilder#separator[1]..wilder#separator[1]..wilder#separator[1]..wilder#separator[1]..wilder#separator[1]..wilder
#separator[1]..wilder#separator[1]..wilder#separator[1]
...
...
E132: Function call depth is higher than 'maxfuncdepth'

at (neo)vim start-up. After dismissing the error the functionalities of the plugin do not really work.

Setup

nvim -v
NVIM v0.5.0-dev+1083-g1aec5ba85
Build type: Release
LuaJIT 2.1.0-beta3

macOs Big Sur 
11.2.2

Feature Request: wilder menu in centered floating window

First off, this is fantastic and so good it should be built in. Thanks a ton, you're a legend.

especially on large high res screens, looking down to the command bar having to move my head is a bit annoying - what I'd love is a telescope-esque UI that floats in the middle of the screen. Potentially even actually using telescope.
This would also give you a lot of extra space to do cool things like e.g. preview the file if someone is typing :e <myfile.py>, previewing the man page if someone is doing ! curl etc.

I know this is probably a lot of work but nonetheless think cool idea.

Thanks a ton!

Issue with cpsm

Hi, sorry that I'm asking an issue about cpsm here, but I looked at their repo and seems to be pretty dormant for quite a while and your plugin is the only reason I found out about them in the first place ๐Ÿ˜‰

The "recommended" advanced Neovim configuration mentions that we need cpsm. Just adding it to vimplug doesn't seem to be enough because I see this error in neovim:

python_cpsm_filt: No module named 'cpsm_py'

I think we need to run their ./install.sh, but when I run it, I see the following errors:

PY3 not specified; inferring Python version from /usr/bin/vim
Python 3 selected
-- The C compiler identification is GNU 11.1.0
-- The CXX compiler identification is GNU 11.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
CMake Error at /usr/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find Boost (missing: Boost_INCLUDE_DIR program_options)
Call Stack (most recent call first):
  /usr/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.21/Modules/FindBoost.cmake:2345 (find_package_handle_standard_args)
  CMakeLists.txt:21 (find_package)

Can you help me please?

Fuzzy finder only matches from the first letter onward.

When typing a pattern, the fuzzy finder only matches words that begin with the first letter of the pattern.

In this example, the pattern "term" matches with the word ctermfg, but the fuzzy finder will not show it, since it will only show matches that begin with the letter "t":
Screenshot from 2021-08-12 14-12-16

I can also confirm that ctermfg is indexed by wilder, since typing "cter" shows it:
Screenshot from 2021-08-12 14-19-28

It'd be nice if we had the option to enable a broader matching style for the fuzzy finder, which included words that do not begin with first letter of the pattern.

Add option to select first item in but not insert it

I would love it if Wilder automatically selected the first item in the suggestion list but without inserting its text into the command-line. And calling wilder#accept_completion() would insert the text in the selected suggestion. This is in my experience how most tools that auto-complete what you're typing work.

What I'm trying to describe is kinda like what set completeopt+=noinsert does for Vim's completion menu.

Is this configurable now or would it be possible to implement as a feature?

Option to reverse wilder#history

Thank you for releasing this great plugin!

Current wilder shows history on popup menu in reverse order compared to the default popup history.

It would be great if we could change the order by an option.

echo not visible when wilder enabled

:echo 1 does not display when wilder is enabled. I'm using NVIM v0.6.0-dev+62d67de59 with the following wilder config:

call wilder#enable_cmdline_enter()
set wildcharm=<tab>
cmap <expr> <c-n> wilder#in_context() ? wilder#next() : "\<c-n>"
cmap <expr> <c-p> wilder#in_context() ? wilder#previous() : "\<c-p>"
call wilder#set_option('modes', ['/', '?', ':'])

call wilder#set_option('pipeline', [
      \   wilder#branch(
      \     [
      \       wilder#check({_, x -> empty(x)}),
      \       wilder#history(),
      \       wilder#result({
      \         'draw': [{_, x -> '๏„ณ ' . x}],
      \       }),
      \     ],
      \     wilder#python_file_finder_pipeline({
      \       'file_command': {_, arg -> stridx(arg, '.') != -1 ? ['fd', '-tf', '-H'] : ['fd', '-tf']},
      \       'dir_command': ['fd', '-td'],
      \       'filters': ['fuzzy_filter', 'difflib_sorter'],
      \       'cache_timestamp': {-> 1},
      \     }),
      \     wilder#cmdline_pipeline({
      \       'fuzzy': 1,
      \       'set_pcre2_pattern': 0,
      \     }),
      \     [
      \       {_, x -> x[:1] ==# '\v' ? x[2:] : x},
      \     ] + wilder#python_search_pipeline({
      \       'pattern': wilder#python_fuzzy_pattern({
      \         'start_at_boundary': 0,
      \       }),
      \     }),
      \   ),
      \ ])

let s:highlighters = [
      \ wilder#pcre2_highlighter(),
      \ wilder#lua_fzy_highlighter(),
      \ ]
call wilder#set_option('renderer', wilder#renderer_mux({
      \ ':': wilder#popupmenu_renderer({
      \   'highlighter': s:highlighters,
      \   'left': [
      \     wilder#popupmenu_devicons(),
      \   ],
      \   'right': [
      \     ' ',
      \     wilder#popupmenu_scrollbar(),
      \   ],
      \ }),
      \ '/': wilder#wildmenu_renderer({
      \   'highlighter': s:highlighters,
      \ }),
      \ }))

how to configure pseudo-transparency (winblend / pumblend) ?

I have basic pop-up menu pseudo-transparency set in my init.vim file:

set termguicolors
set pumblend=50

This gives me psuedo-transparent popup windows with coc (not shown) and telescope (telescope config shown below using winblend):

lua << EOF
require('telescope').setup{
  defaults = {
    ...
    winblend = 20,
    ...
  }
}
EOF

How do I configure this pumblend/winblend feature for wilder? Can we include that in the docs? (If someone shows me how, then I could create a PR to include the instructions in the README).

Float renderer overwrites statusline in neovim

I am using neovim built with the latest commit(as on today c423ec65dcda1b5).
I observe that float renderer is overwriting status line and also displaying line number. A sample screenshot is shown below

wilder_float_renderer

Following is my renderer configuration:

call wilder#set_option('renderer', wilder#float_renderer({
\ 'separator':' โ€ข ',
\ 'separator_hl': s:sep_hl,
\ 'hl': s:status_hl,
\ 'left': [
\ {'value': [' WILDER', wilder#spinner()], 'hl': s:mode_hl},
\ wilder#separator('', s:mode_hl, s:status_hl, 'left'), ' ',
\ ],
\ 'right': [
\ ' ', wilder#separator('', s:index_hl, s:status_hl, 'right'),
\ wilder#index({'hl': s:index_hl}),
\ ],
\ }))

This setting works fine for wilder#statusline_renderer()
Can you please help me in configuring right settings?

[Question] I want to set pumblend to floatwin

I would like to set pumblend on the completion window to make it transparent.
I think the image in the README sets the transparency, but I couldn't figure out how to do it after reading the doc.
How can I set it to make the completion window transparent?

Custom pipeline and problem with sorter

Great plugin!

I created a pipelines for oldfiles selection with :o and :os and :ov. Works nice, but I cannot figure out how to apply a sorter to it. Can you help me please?

all wilder#enable_cmdline_enter()
set wildcharm=<Tab>
cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>"
cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>"
call wilder#set_option('modes', ['/', '?', ':'])
 
call wilder#set_option('pipeline', [
      \   wilder#branch(
      \     wilder#python_file_finder_pipeline({
      \       'file_command': ['find', '.', '-type', 'f', '-printf', '%P\n'],
      \       'dir_command': ['find', '.', '-type', 'd', '-printf', '%P\n'],
      \       'filters': ['python_fuzzy_filter'],
      \     }),        
      \     [ wilder#check({ctx, x -> x =~ "^o "}),
      \       {ctx, x -> {'value': wilder#vim_fuzzy_filt(ctx, {}, copy(eval('v:oldfiles')), x[2:]),
      \                   'replace': [{ctx, x, data -> 'e ' .x}]} }],
      \     [ wilder#check({ctx, x -> x =~ "^os "}),
      \       {ctx, x -> {'value': wilder#vim_fuzzy_filt(ctx, {}, copy(eval('v:oldfiles')), x[3:]), 
      \                   'replace': [{ctx, x, data -> 'split ' .x}]} }],
      \     [ wilder#check({ctx, x -> x =~ "^ov "}),
      \       {ctx, x -> {'value': wilder#vim_fuzzy_filt(ctx, {}, copy(eval('v:oldfiles')), x[3:]), 
      \                   'replace': [{ctx, x, data -> 'vsplit ' .x}]} }],
      \     wilder#cmdline_pipeline(),
      \     wilder#python_search_pipeline(),
      \   ),           
      \ ])             
                       
call wilder#set_option('renderer', wilder#renderer_mux({
      \ ':': wilder#popupmenu_renderer({'left': [wilder#popupmenu_devicons()], 'highlighter': wilder#basic_highlighter()}),
      \ '/': wilder#wildmenu_renderer({'highlighter': wilder#basic_highlighter()})
      \ }))            

self.state.buf may be invalid in s:add_highlight

The patch fixes the problem.

diff --git a/autoload/wilder/renderer/vim_api.vim b/autoload/wilder/renderer/vim_api.vim
index 3700b6b..561cac4 100644
--- a/autoload/wilder/renderer/vim_api.vim
+++ b/autoload/wilder/renderer/vim_api.vim
@@ -110,6 +110,10 @@ function! s:set_line(line, str) dict abort
 endfunction

 function! s:add_highlight(hl, line, col_start, col_end) dict abort
+  if self.state.buf < 0
+    return
+  endif
+
   let l:prop_type = 'WilderProp_' . a:hl

   if !has_key(self.state.prop_types, a:hl)

CPSM Error

After compiling and installing CPSM I get the following error as soon as I :e

pipeline: Vim(let):Error invoking '/Users/garfield/.config/nvim/plugged/wilder.nvim/rplugin/
python3/wilder:function:_wilder_python_get_file_completion' on channel 5:^@Invalid channel: 5

My wilder config is as follows:

 "Wilder
call wilder#enable_cmdline_enter()
set wildcharm=<Tab>
cmap <expr> <c-n> wilder#in_context() ? wilder#next() : "\<c-n>"
cmap <expr> <c-p> wilder#in_context() ? wilder#previous() : "\<c-p>"
cmap <expr> <C-D> wilder#can_accept_completion() ? wilder#accept_completion() : "\<C-D>"
call wilder#set_option('modes', [':'])

call wilder#set_option('pipeline', [
      \   wilder#branch(
      \     wilder#cmdline_pipeline({
      \       'fuzzy': 1,
      \       'fuzzy_filter': wilder#python_cpsm_filter(),
      \       'set_pcre2_pattern': 0,
      \     }),
      \     wilder#python_search_pipeline({
      \       'pattern': wilder#python_fuzzy_pattern({
      \         'start_at_boundary': 0,
      \       }),
      \     }),
      \   ),
      \ ])




let s:highlighters = [
        \ wilder#pcre2_highlighter(),
        \ wilder#basic_highlighter(),
        \ ]

call wilder#set_option('renderer', wilder#renderer_mux({
      \ ':': wilder#popupmenu_renderer({
      \   'highlighter': s:highlighters,
      \   'left': [
      \     wilder#popupmenu_devicons(),
      \   ],
      \   'right': [
      \     ' ',
      \     wilder#popupmenu_scrollbar(),
      \   ],
      \ }),
      \ '/': wilder#wildmenu_renderer({
      \   'highlighter': s:highlighters,
      \ }),
      \ }))

OS: macOS Catalina

NVIM v0.6.0-dev+c31bc6ea7
Build type: Release
LuaJIT 2.1.0-beta3

popup menu rendered not working

As described here in the docs I am trying to default the rendered to popup menu: my configuration is the following

call wilder#set_option('renderer', wilder#popupmenu_renderer({
			\ 'highlights': wilder#basic_highlighter(),
			\ 'apply_highlights': wilder#query_common_subsequence_spans(),
			\ 'separator': ' ยท ',
			\ 'ellipsis': '...',
			\ 'left': [{'value': [
			\    wilder#condition(
			\      {-> getcmdtype() ==# ':'},
			\      ' COMMAND ',
			\      ' SEARCH ',
			\    ),
			\ ], 'hl': s:mode_hl,},
			\ wilder#separator('๎‚ฐ', s:mode_hl, s:hl, 'left'), ' ',
			\ ],
			\ 'right': [
			\    ' ', wilder#separator('๎‚ฒ', s:index_hl, s:hl, 'right'),
			\    wilder#index({'hl': s:index_hl}),
			\ ],
			\ }))

however, the popup is not showing up and neither are the suggestions on the statusline: is there any other option I have to set to have it working?

Case Insensitive / and ?

Is it possible to have suggestions displayed case insensitively? Specifically when using / and ? for searching.

CocList subcommand completion does not work

wilder.nvim is the best plugin I've come across this year.

However, the CocList completion doesn't seem to be working well.

Peek 2020-08-18 11-32

I think you should be able to complete it, or you should be able to set it to ignore some commands.


vim version: nvim v0.5.0-627-g94b7ff730
coc.nvim version: 0.0.78-bdd9a9e140

  call wilder#enable_cmdline_enter()
  set wildcharm=<Tab>
  cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>"
  cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>"
  nnoremap <expr> <SubLeader>w wilder#toggle()

  " only / and ? is enabled by default
  call wilder#set_option('modes', ['/', '?', ':'])
  let s:hl = 'LightlineMiddle_active'
  let s:mode_hl = 'LightlineLeft_active_0'
  let s:index_hl = 'LightlineRight_active_0'

  call wilder#set_option('renderer', wilder#wildmenu_renderer({
        \ 'highlights': {
        \   'default': s:hl,
        \ },
        \ 'apply_highlights': wilder#query_common_subsequence_spans(),
        \ 'separator': '  ',
        \ 'left': [{'value': [
        \    wilder#condition(
        \      {-> getcmdtype() ==# ':'},
        \      ' COMMAND ',
        \      ' SEARCH ',
        \    ),
        \    wilder#condition(
        \      {ctx, x -> has_key(ctx, 'error')},
        \      '!',
        \      wilder#spinner({
        \        'frames': '-\|/',
        \        'done': '',
        \      }),
        \    ), ' ',
        \ ], 'hl': s:mode_hl,},
        \ wilder#separator('', s:mode_hl, s:hl, 'left'), ' ',
        \ ],
        \ 'right': [
        \    ' ', wilder#separator('', s:index_hl, s:hl, 'right'),
        \    wilder#index({'hl': s:index_hl}),
        \ ],
        \ }))

vim8 native package manager support

Hello ๐Ÿ‘‹
Can this awesome plugin be installed with vim8's native package manager? If it can then what is the installation process?
Thank you)

Highlight color for results separator

This is a great plugin and more improved compared to Cmd2.

Can you let me know how to customize highlighting for the separator between results? Example would be great.

Vim(call):E697: List lacks of ending character ']' using example config.

Here is my config, I'm using Neovim 0.5 with Packer.

  {
    "gelguy/wilder.nvim",
    requires = "nixprime/cpsm",
    config = function()
      vim.cmd([[
call wilder#enable_cmdline_enter()
set wildcharm=<Tab>
cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>"
cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>"
call wilder#set_option('modes', ['/', '?', ':'])

call wilder#set_option('pipeline', [
      \   wilder#branch(
      \     wilder#python_file_finder_pipeline({
      \       'file_command': {_, arg -> stridx(arg, '.') != -1 ? ['fd', '-tf', '-H'] : ['fd', '-tf']},
      \       'dir_command': ['fdfind', '-td'],
      \       'filters': ['cpsm_filter'],
      \       'cache_timestamp': {-> 1},
      \     }),
      \     wilder#cmdline_pipeline({
      \       'fuzzy': 1,
      \       'fuzzy_filter': wilder#python_cpsm_filter(),
      \       'set_pcre2_pattern': 0,
      \     }),
      \     wilder#python_search_pipeline({
      \       'pattern': wilder#python_fuzzy_pattern({
      \         'start_at_boundary': 0,
      \       }),
      \     }),
      \   ),
      \ ])

let g:highlighters = [
      \ wilder#pcre2_highlighter(),
      \ wilder#lua_fzy_highlighter(),
      \ ]

call wilder#set_option('renderer', wilder#renderer_mux({
      \ ':': wilder#popupmenu_renderer({
      \   'highlighter': g:highlighters,
      \   'left': [
      \     wilder#popupmenu_devicons(),
      \   ],
      \   'right': [
      \     ' ',
      \     wilder#popupmenu_scrollbar(),
      \   ],
      \ }),
      \ '/': wilder#wildmenu_renderer({
      \   'highlighter': g:highlighters,
      \ }),
      \ }))
      ]])
    end,
  }

Any plans to allow configuration from lua?

Right now all the configuration is done through vimscript calls and variables. Personally, I want to keep as much of my configuration as lua, but this plugin makes me keep around some large blocks of vim.cmd[[]]

Vim regular expressions are not supported and cause 'bad escape' errors

For example, when I search for \chello, it prints out a warning python_search: bad escape \c at position 1.

Considering behaviours of Vim regexps are sometimes influenced by settings as well, e.g. ignorecase, smartcase, I'm wondering if it's possible to leave this part of job to Vim itself? Or it's time to find/create a Vim regexp library for Python?

autochdir not working

my vim configuration uses autochdir, but the current path is not changed when the wilder executes
: e /path/of/ file

Wrong candidate order (the result of sorting is not satisfactory)

This is a great plugin! I have found that the completion candidate order is not what I expect.

My config for wilder.nvim

call wilder#enable_cmdline_enter()
set wildcharm=<Tab>
cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>"
cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>"

" only / and ? are enabled by default
call wilder#set_option('modes', ['/', '?', ':'])

call wilder#set_option('pipeline', [
      \   wilder#branch(
      \     wilder#cmdline_pipeline({
      \       'language': 'python',
      \       'fuzzy': 1,
      \     }),
      \     wilder#python_search_pipeline({
      \       'pattern': wilder#python_fuzzy_pattern(),
      \       'sorter': wilder#python_fuzzywuzzy_sorter(),
      \       'engine': 're',
      \     }),
      \   ),
      \ ])

call wilder#set_option('renderer', wilder#wildmenu_renderer({
      \ 'highlighter': wilder#basic_highlighter(),
      \ 'separator': '  ',
      \ 'right': [' ', wilder#wildmenu_index()],
      \ }))

When I type :h vim.paste(), I would expect that vim.paste() is ranked first in the completion item. However, it is rankded the last in the list of completion items (see image below)

image

Wilder changes behaviour of <Up> when searching

Vim's default behaviour of <Up> in / breaks with wilder.

This is what :help c_<Up> reads:

							c_<Up> c_Up
<Up>	recall older command-line from history, whose beginning
		matches the current command-line (see below).

To reproduce:

  1. Use the following minimal .vimrc:
call plug#begin('~/.config/nvim/packages/')
Plug 'gelguy/wilder.nvim'
call plug#end()

call wilder#enable_cmdline_enter()
  1. Do / and then press <Up> a couple of times.
  2. Some other text that is not part of your latest searches show up.
  3. Compare to doing this with an empty .vimrc, which does what :help c_<Up> describes

Expected behaviour when pressing <Up>:

Your latest searches show up in the command-line.

<Up> does seem to work with : (command-line mode), but does not work with ? (backwards search).

incorrect documentation for wilder#cmdline_pipeline

The documentation for sorter argument of wilder#cmdline_pipeline:

        For Neovim, |wilder#python_sort_difflib()| and
        |wilder#python_sort_fuzzywuzzy()| can be used here.

If we use wilder#python_sort_fuzzywuzzy(), we get an error, because it is deprecated in favor of wilder#python_fuzzywuzzy_sort(). However, wilder#python_fuzzywuzzy_sort() can not be used here either. We should use wilder#python_fuzzywuzzy_sorter() instead.

All of this is confusing for a new user like me.

Neovim floating window visual artifacts

wilder#wildmenu_renderer() with mode: float and wilder#popupmenu_renderer() will sometimes leave behind visual artifacts which cannot be cleared with redraw.

The visual artifacts can be cleared by causing the grid chars to be redrawn e.g. by scrolling.

Most commonly occurs when the cmdline width exceeds cmdheight so the floats have to be drawn over the cmdline.

wilder with shortmess-=F overrides messages

I've had wilder installed and set shortmess-=F as required by nvim-metals. This resulted in all the messages being overriden with information about current file. Eg when doing :map gd I would see:
"./init.vim" 13 lines --61%--
The expected No mapping found can be still seen in :messages

minimal init.vim repro (with plug.vim):

set shortmess-=F
call plug#begin()
Plug 'gelguy/wilder.nvim'
call plug#end()

call wilder#enable_cmdline_enter()

set wildcharm=<Tab>
cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>"
cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>"

" only / and ? is enabled by default
call wilder#set_option('modes', ['/', '?', ':'])

Using external fuzzy finder

In the present code, is there a provision to pass the completion through external tools like fzf?
If not, is there a plan to do this?
Currently, full fuzzy completion is not working for me.

Leading lines of input() prompt are cleared

I'm using neovim 0.5.0 with the following minimal rc:

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath

" vim-plug
call plug#begin()

Plug 'gelguy/wilder.nvim'

call plug#end()

" wilder.nvim
call wilder#enable_cmdline_enter()
call wilder#set_option('modes', ['/', '?', ':'])

function! Foo() abort
  let prompt = "hello\nworld: "
  call input(l:prompt)
endfunction
function! Bar() abort
  echo 'hello'
  echo 'world'
  call input('User input: ')
endfunction

" vim: set tabstop=4 softtabstop=0 expandtab shiftwidth=2 smarttab:

Now if I :call Foo(), I'd expect the following in cmdline:

hello
world: 

But instead it shows:

world:

Similarly if I :call Bar(), I expect

hello
world
User input: 

But instead it shows only

User input: 

If I comment out

call wilder#enable_cmdline_enter()
call wilder#set_option('modes', ['/', '?', ':'])

from vimrc above, the outputs are back to normal.

Renderering errors with ambiwidth=double

Setting ambiwidth=double might cause strdisplaywidth() calculations to be wrong if the terminal still renders the characters as single width.

If you have this issue, please post your environment (OS, terminal, Vim version, $TERM) and config below to help with debugging.

No module named 'pwd' on Windows

On Windows I have the fallowing error when traying to complete:

E117: Unknown function: _wilder_init

NeoVim's checkhealth returns:

## Remote Plugins
  - WARNING: "wilder.nvim" is not registered.
  - WARNING: Out of date
    - ADVICE:
      - Run `:UpdateRemotePlugins`

After runing :UpdateRemotePlugins I get the error

ModuleNotFoundError: No module named 'pwd'

Using the fuzzy config from the example.

call wilder#enable_cmdline_enter()
set wildcharm=<Tab>
cmap <expr> <Tab> wilder#in_context() ? wilder#next() : "\<Tab>"
cmap <expr> <S-Tab> wilder#in_context() ? wilder#previous() : "\<S-Tab>"
call wilder#set_option('modes', ['/', '?', ':'])

call wilder#set_option('pipeline', [
      \   wilder#branch(
      \     wilder#cmdline_pipeline({
      \       'fuzzy': 1,
      \     }),
      \     wilder#python_search_pipeline({
      \       'pattern': 'fuzzy',
      \     }),
      \   ),
      \ ])

let s:highlighters = [
        \ wilder#pcre2_highlighter(),
        \ wilder#basic_highlighter(),
        \ ]

call wilder#set_option('renderer', wilder#renderer_mux({
      \ ':': wilder#popupmenu_renderer({
      \   'highlighter': s:highlighters,
      \ }),
      \ '/': wilder#wildmenu_renderer({
      \   'highlighter': s:highlighters,
      \ }),
      \ }))

python version -> 3.9.6
nvim version -> 0.5.0

Works fine under WSL, but not native Windows.

Make auto_select optional on accept_completion

Would it be possible to expose the auto_select being run on the call to run_pipeline in wilder#main#accept_completion as an option?

I personally find it (mildly) annoying that when I accept something from the list the first value from the next list gets autocompleted because that stops me from keeping typing. Instead I have to get rid of the autocompletion then type.

My current solution is to manually set it to 0 but having the option to disable would be nice.

Edit: I can attempt a pull request if you think the request is reasonable

Add hint for dein users in readme

Hey there,

really nice plugin. I just struggled for an eternity trying to figure out why it didn't work for me.

After a long time i realized that this line in my vimrc:
let g:dein#lazy_rplugins = v:true
means that i have to lazy load the plugin, which i didn't at first.
In fact before this plugin i had no idea what remote plugins are.

Maybe it would be a nice hint for dein users in the readme.

Obviously it's my own stupidity, but i can imagine few people are familiar with remote plugins, since it isn't commonly used by plugins. At least i haven't seen it a lot.

Thanks for the plugin, have a nice day.

Wilder popup menu does not close after pressing <C-f>

By default <C-f> opens the command-line window. However, wilder leaves its popup menu open when pressing <C-f>, which blocks the command-line-window.

To reproduce:

  1. Use the following minimal .vimrc:
call plug#begin('~/.config/nvim/packages/')
Plug 'gelguy/wilder.nvim'
call plug#end()

call wilder#setup({'modes': [':', '/', '?']})
call wilder#set_option('renderer', wilder#popupmenu_renderer({
      \ 'highlighter': wilder#basic_highlighter(),
      \ }))
  1. Do : and then press <C-f>.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.