wincent / command-t

⌨️ Fast file navigation for Neovim and Vim
BSD 2-Clause "Simplified" License
2.76k stars 321 forks source link

Hitting Ctrl-F to flush the Command-T cache doesn't pay attention to changed &wildignore setting #296

Closed mgedmin closed 2 years ago

mgedmin commented 7 years ago

I've upgraded command-t and was disappointed to see it no longer ignores my ./client/node_modules tree (which is huge and causes the 200,000 file limit warning message). I then read :h command-t again and noticed that my &wildignore setting was incorrect (I used set wildignore+=**/node_modules/** where I should've just used */node_modules/*).

I fixed my ~/.vimrc, reset wildignore to the default (:set wildignore&), sourced ~/.vim/vimrc again, then tried to flush the Command-T cache by doing \t followed by Ctrl+F.

I expected not to see node modules any more, but instead I got the 200,000 file warning again plus everything.

After wasting 15 minutes trying to figure out what I was doing wrong I finally quit vim and restarted it -- and discovered that Command-T started paying attention and ignoring the node_modules directory.

mgedmin commented 7 years ago

(For the record, using :CommandTFlush instead of Ctrl+F does pay attention to changes in &wildignore)

wincent commented 7 years ago

Yeah, the whole OO hierarchy orchestrated by the controller class is a tangled mess of statefulness. <C-f> is not intended to be a full reset, but rather just instructs the scanner to scan again. On the other hand, :CommandTFlush is able to blow away a bit more state.

The whole thing needs to be rewritten, to be honest. It started out simply, and as is often the way, gradually accrued complexity over time, to the point where it has definitely outgrown itself, so to speak. See also #290, which is about toggling a setting while the match listing is open: I hacked together a sample showing how the desired functionality could be added (https://gist.github.com/wincent/2c9d67ce73f381093a0342322d858137) but I am hesitant to ship it because it really needs to be rewritten from the ground up if we're going to support this kind of live-update of the settings scenario and expect things to work well.

wincent commented 2 years ago

Given the big rewrite for v6.0.x, I'm closing all older issues as there is unlikely to be anything significant happening on the 5-x-devel branch from here on[^patches]. Feedback issue for 6.0.x is here:

[^patches]: Patches and PRs would be welcome, but my personal efforts are going to be directed towards main.