Permalink
Commits on May 5, 2017
  1. Simplify converted wildignore regexp

    trotzig committed with wincent May 5, 2017
    The previous regexp constructed as a result of converting the wildignore
    patter `*/something/*` would have an ending that was overly complicated.
    We can simplify that by just using `.+`.
  2. Fix turning */foo/* wildignore into a regexp

    trotzig committed with wincent May 3, 2017
    I was trying to get rid of files inside dist folders in my command-t
    search results. So I added this to my wildignore setting for vim:
    
      */dist/*
    
    ...which didn't seem to have any effect. I'm using watchman, so at first
    I thought that there might some cache that needs to be invalidated. But
    `watchman watch-del <path>` didn't help.
    
    I decided to change the wildignore pattern to `*/dist`. This worked, and
    didn't require any cache invalidation.
    
    Digging through the code, I found a simple way to reproduce the but in
    an rspec test. So I decided to fix it, by
    - Flipping the order between the `*/something` pattern and the
    `*/something/*` pattern, to deal with the most complicated pattern
    first.
    - Changing the matching pattern to look for a slash instead of a star.
    - Changing the resulting regexp to include the slash plus anything
    after.
Commits on Apr 21, 2017
  1. Fix edge case regression when searching for dotfiles

    wincent committed Apr 21, 2017
    Fixes problem introduced in ee97325.
    
    Given an initial empty search string we were setting dotfiles to have a
    score of 0.0 in order to hide them from the search listing, which was
    causing them to be skipped in subsequent searches, even if the user
    types ".foo". Notably, on pressing backspace, our shortcircuiting would
    be deactivated and we would show the results.
    
    The (regrettably subtle) fix here is to hide the files in the initial
    search by returning a *negative* score.
    
    When the user then types a period ("."), we will go ahead an calculate
    the score, at which point the -1.0 will be replaced with some positive
    score (because we can't fail to match in this case, the dot matches the
    dotfile by definition). If the *next* letter (or any other letter typed
    later on) causes a failure to match, we'll set the score to 0.0, causing
    it to be suppressed (until backspace is pressed).
    
    On the other hand, if instead of typing a period the user types a
    letter, these files will continue to be skipped (and their score set to
    -1.0) at relatively low cost, so this shouldn't have any negative impact
    on the benchmarks.
    
    Note the p values (no significant difference):
    
    Summary of cpu time and (wall-clock time):
                        best    avg      sd     +/-   p   (best)    (avg)      (sd)     +/-   p
         pathological 1.07000 1.16800 0.12734 [+0.9%]   (1.07308) (1.17285) (0.13029) [+0.6%]
            command-t 0.81000 0.92000 0.09592 [+2.4%]   (0.81280) (0.92122) (0.09806) [+2.6%]
    chromium (subset) 3.18000 3.30600 0.09521 [-3.0%]   (0.64119) (0.67648) (0.02236) [-2.5%]
     chromium (whole) 4.30000 4.34200 0.03370 [-1.2%]   (0.63329) (0.67998) (0.02648) [-8.9%]
           big (400k) 6.23000 6.39400 0.12532 [-0.7%]   (0.99223) (1.06572) (0.07311) [+3.2%]
    c
Commits on Apr 19, 2017
  1. Use One True Brace Style consistently

    wincent committed Apr 19, 2017
    Was mostly using it already, just rolling it out more consistently.
  2. Use last needle to skip over definite non-matches

    wincent committed Apr 19, 2017
    Idea from Hanson Wang and implemented in fuzzy-native here (thanks for
    the heads-up, @hansonw):
    
    facebook-atom/nuclide-prebuilt-libs@6a03044
    
    The basic notion is that if the search string is an extension of the
    previous search string (ie. if you just searched for "foo" and then
    typed an additional "b" to search for "foob"), then we can skip over all
    the items that didn't match "foo", because they won't match "foob"
    either.
    
    This delivers a nice speed-up for the common case of typing a
    successively longer search query to narrow the result set:
    
    Summary of cpu time and (wall-clock time):
                        best    avg      sd      +/-     p    (best)    (avg)      (sd)      +/-     p
         pathological 1.05000 1.11600 0.07338  [+0.0%]      (1.04406) (1.11903) (0.07496)  [+0.1%]
            command-t 0.75000 0.84600 0.08958 [-15.4%] 0.05 (0.76016) (0.84675) (0.08892) [-15.5%] 0.05
    chromium (subset) 3.10000 3.17200 0.03816 [-20.9%] 0.05 (0.58766) (0.60345) (0.02392) [-20.7%] 0.05
     chromium (whole) 3.80000 3.87800 0.06645 [-60.7%] 0.05 (0.53332) (0.54951) (0.01307) [-56.9%] 0.05
           big (400k) 5.63000 5.78000 0.12570 [-56.9%] 0.05 (0.78037) (0.83729) (0.04883) [-56.5%] 0.05
  3. Don't waste time inserting non-matches into the heap(s)

    wincent committed Apr 19, 2017
    Non-matches will have score 0.0, so we can skip those. In the edge-case
    of the zero-width search string, all matches have score 1.0 (with
    alpha-ordering taking care of tie-breaking). So, we can safely skip the
    heap operations for items scoring 0.0.
    
    Improves our baseline:
    
    Summary of cpu time and (wall-clock time):
                        best      avg      sd     +/-   p   (best)    (avg)      (sd)     +/-   p
         pathological  1.12000  1.19600 0.12290 [+1.8%]   (1.11718) (1.20318) (0.12606) [+2.2%]
            command-t  1.45000  1.54400 0.11271 [+0.8%]   (1.44169) (1.54049) (0.11130) [+0.8%]
    chromium (subset)  5.50000  5.58400 0.06406 [+0.4%]   (0.93548) (0.96777) (0.01784) [-3.2%]
     chromium (whole)  7.73000  7.92200 0.18498 [+0.5%]   (1.07602) (1.22772) (0.18294) [+6.0%]
           big (400k) 11.61000 11.88200 0.14851 [-1.4%]   (1.67856) (1.85601) (0.17784) [+0.3%]
    
    To:
    
    Summary of cpu time and (wall-clock time):
                        best    avg      sd      +/-     p    (best)    (avg)      (sd)      +/-     p
         pathological 1.07000 1.11600 0.02653  [-7.2%]      (1.07558) (1.11756) (0.02452)  [-7.7%]
            command-t 0.89000 0.97600 0.10111 [-58.2%] 0.05 (0.89123) (0.97778) (0.10287) [-57.5%] 0.05
    chromium (subset) 3.68000 3.83400 0.08499 [-45.6%] 0.05 (0.67209) (0.72860) (0.04759) [-32.8%] 0.05
     chromium (whole) 5.99000 6.23200 0.13167 [-27.1%] 0.05 (0.82809) (0.86220) (0.02334) [-42.4%] 0.05
           big (400k) 8.87000 9.06600 0.10307 [-31.1%] 0.05 (1.27407) (1.31064) (0.03354) [-41.6%] 0.05
    
    So pretty big drops across the board.
  4. Fix load paths in matcher benchmarks

    wincent committed Apr 19, 2017
    Haven't run these for a while, so they broke when I changed the path
    structure.
Commits on Apr 5, 2017
  1. Add g:CommandTWindowFilter

    wincent committed Apr 5, 2017
Commits on Mar 2, 2017
  1. Merge branch 'pull/270'

    wincent committed Mar 2, 2017
    Closes: #270
    
    * pull/270:
      Fix MacVim address
  2. Fix MacVim address

    douglasdrumond committed with wincent Mar 2, 2017
    Björn no longer maintains MacVim. The repository moved to GitHub.com/macvim-dev/macvim, and now there's a page pointing to releases.
Commits on Jan 8, 2017
  1. Revert Gem::Ext::BuildError change

    wincent committed Jan 8, 2017
    I tested this in `irb`, but when I ran Command-T, it dies with:
    
      NameError: uninitialized constant Gem::Ext
    
    So will have to try again.
  2. Revert Gem::Ext::BuildError change

    wincent committed Jan 8, 2017
    I tested this in `irb`, but when I ran Command-T, it dies with:
    
      NameError: uninitialized constant Gem::Ext
    
    So will have to try again.
  3. doc: regenerate AUTHORS section

    wincent committed Jan 8, 2017
    Which I must have mismerged in one of my recent merges.
  4. Merge branch 'master' into next

    wincent committed Jan 8, 2017
    * master:
      doc: update AUTHORS section
      Put `rescue` constants in alphabetical order
      Fix command-t on Debian Jessie when using RVM with ruby 2.2.1
      doc: fix a spelling error in the HISTORY section
      doc: Update section on watchman wildignore filtering
      doc: Fix instructions for overriding default mappings
      Fix bad memoization of help finder
      Add logo to README
  5. Merge branch 'pull/262'

    wincent committed Jan 8, 2017
    Closes: #262
    
    * pull/262:
      doc: update AUTHORS section
      Put `rescue` constants in alphabetical order
      Fix command-t on Debian Jessie when using RVM with ruby 2.2.1
  6. doc: update AUTHORS section

    wincent committed Jan 8, 2017
Commits on Dec 15, 2016
Commits on Dec 13, 2016
  1. Invalidate HelpScanner cache when runtimepath changes

    wincent committed Dec 13, 2016
    As mentioned in the previous commit, this makes sure we can find help
    made accessible with `:packadd`.
  2. Always re-complete help paths in HelpScanner

    wincent committed Dec 13, 2016
    This is a temporary mitigation for an issue I've been seeing with
    deferred package additions. If you load the scanner early on, the
    results are cached forever, requiring a manual invalidation.
    
    I will replace this with a smarter strategy in the next commit, but for
    now wanted to show my work. It turns out that this isn't actually too
    bad (slow), but I can make it better.
Commits on Nov 30, 2016
  1. Add :CommandTOpen, baking in "GotoOrOpen" functionality by default

    wincent committed Nov 30, 2016
    The next release will be 5.0, so may as well make a "breaking" change
    and bake in the "GotoOrOpen" functionality that previously only existed
    in my dot-files and, indirectly, in the docs.
Commits on Nov 29, 2016
  1. doc: fix a typo

    wincent committed Nov 29, 2016
Commits on Oct 27, 2016
  1. doc: Update section on watchman wildignore filtering

    wincent committed Oct 27, 2016
    Slight tweak to reflect reality. None of the scanners use
    Vim to do the filtering anymore; they all use regexen.
Commits on Oct 26, 2016
Commits on Oct 20, 2016
  1. Only print mismatching version numbers if they actually mismatch

    wincent committed Oct 20, 2016
    Always show the Vim Ruby version. Only show the version expected by
    Command-T if it differs.
    
    Should avoid confusion of the type evidenced in:
    
    #247
Commits on Oct 13, 2016
  1. doc: fix typo in HISTORY section

    wincent committed Oct 13, 2016
Commits on Oct 12, 2016
  1. Add empty .watchmanconfig

    wincent committed Oct 12, 2016
    Allows a Watchman instance configured with `enforce_root_files` to watch
    this directory even if `root_files` does not contain any of the files in
    the directory. (Necessary to get around undesired corporate
    `/etc/watchman.json` config.)
Commits on Oct 6, 2016
  1. Revert "Remove -c from git-ls-files invocation"

    wincent committed Oct 6, 2016
    This reverts commit 9a5bdc9.
    
    Turns out that this is needed after all, otherwise the presence of
    `--others` causes *only* untracked files to be shown. To show the union
    of tracked and untracked you need `-c` as well.
Commits on Oct 5, 2016
  1. Merge branch 'pull/235'

    wincent committed Oct 5, 2016
    Closes: #235
    
    * pull/235:
      doc: add g:CommandTGitIncludeUntracked to HISTORY
      doc: Add Steven Stallion to the list of AUTHORS
      Remove -c from git-ls-files invocation
      Add untracked files to `git ls-files` output