<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>vim-scripts news feed</title>
 <link href="/feeds/news.xml" rel="self"/>
 <link href="/"/>
 <updated>2012-08-16T14:11:47-07:00</updated>
 <id>/</id>
 <author>
   <name>vim-scripts</name>
   <email>news-feed@vim-scripts.org</email>
 </author>

 
 <entry>
   <title>contribute to vim-scripts.org</title>
   <link href="/news/2011/10/24/contribute-to-vim-scripts-org.html"/>
   <updated>2011-10-24T00:00:00-07:00</updated>
   <id>/news/2011/10/24/contribute-to-vim-scripts-org</id>
   <content type="html">&lt;p&gt;Hello Vimmers!&lt;/p&gt;

&lt;p&gt;All of you probably know that &lt;a href=&quot;http://vim-scripts.org&quot;&gt;vim-scripts.org&lt;/a&gt; mirrors &lt;a href=&quot;http://vim-scripts.org/vim/scripts.html&quot;&gt;all vim.org scripts on Github&lt;/a&gt; making them &lt;a href=&quot;https://github.com/vim-scripts&quot;&gt;available as git repos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/bronson&quot;&gt;Scott&lt;/a&gt;, the author of &lt;a href=&quot;http://vim-scripts.org&quot;&gt;vim-scripts.org&lt;/a&gt; did a great job with implementing and running it (at his own expense btw).  Still it can be even better!&lt;/p&gt;

&lt;p&gt;For obvious reasons Scott's open-source-hours are limited as well as &lt;a href=&quot;http://github.com/gmarik&quot;&gt;mine&lt;/a&gt;.
Therefore in order to improve &lt;a href=&quot;http://vim-scripts.org&quot;&gt;vim-scripts.org&lt;/a&gt; we're looking for those of you interested in contributing your expertise.&lt;/p&gt;

&lt;p&gt;Here's general outline on what needs to be done:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;new website &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper.github.com/issues/9&quot;&gt;theme&lt;/a&gt;, logo, &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper.github.com/issues/10&quot;&gt;favicon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://github.com/mojobmo/jekyll&quot;&gt;Jekyll&lt;/a&gt; based template fixes: &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper.github.com/issues/6&quot;&gt;pagination&lt;/a&gt;, &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper.github.com/issues/7&quot;&gt;news dupes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;language improvements all over the site: &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper.github.com/issues/2&quot;&gt;edit down&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;all &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper.github.com/issues&quot;&gt;web-site UX/UI issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;many &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/issues&quot;&gt;scraper issues&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Yeah, lots to be done!&lt;/p&gt;

&lt;p&gt;In case you cannot contribute with your skills you can always &lt;a href=&quot;https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;amp;hosted_button_id=TPRYUWB49GUAU&quot;&gt; donate &lt;/a&gt; to support the project.&lt;/p&gt;

&lt;p&gt;Discussion is welcomed so make sure to leave your &lt;a href=&quot;#comments&quot;&gt;comment&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks all, let's make Vim ecosystem better!&lt;/p&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vim-scraper/vim-scripts/wiki/Contribute&quot;&gt;website contributor how-to&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</content>
 </entry>
 
 <entry>
   <title>Picky About Timezones</title>
   <link href="/news/2011/06/23/picky-about-timezones.html"/>
   <updated>2011-06-23T00:00:00-07:00</updated>
   <id>/news/2011/06/23/picky-about-timezones</id>
   <content type="html">&lt;p&gt;Github has started refusing commits created by the scraper.
Due to a missing zero in the committer date, there's a chance that
all script repositories will have to be regenerated.&lt;/p&gt;

&lt;p&gt;We live in interesting times.&lt;/p&gt;

&lt;p&gt;The good news is that the scraper is back online and caught up so,
other than that, things should be back to normal.&lt;/p&gt;

&lt;h2&gt;The Story&lt;/h2&gt;

&lt;p&gt;Up until last week, GitHub was happy to accept commits with a time zone of -700.
Now, presumably due to a Git upgrade, they only accept pushes with
four digit time zones: -0700.  The others are refused.&lt;/p&gt;

&lt;p&gt;Unfortunately, every vim-scripts commit has been generated
with a time zone of -700.&lt;/p&gt;

&lt;p&gt;How did this happen?&lt;/p&gt;

&lt;p&gt;Back in the beginning of time, the scraper would shell out to the git
executable any time it needed to manipulate a repository.
Picture a sea of calls like &lt;code&gt;system(&quot;git tag -a -m ...&quot;)&lt;/code&gt;
and hoping that everything went OK.
It was slow, ugly, unreliable, and confusing.&lt;/p&gt;

&lt;p&gt;Then I tried switching to &lt;a href=&quot;https://github.com/mojombo/grit&quot;&gt;Grit&lt;/a&gt;.
This made things prettier because I could use Grit objects instead
of passing text strings everywhere, the errors became more understandable,
and there were a few other benefits.  However, there were some serious
drawbacks too: it was continually changing the current directory, confusing
itself, and it still shelled out for everything.  It was pretty
clear that Grit was written with GitHub's needs in mind and, if I wanted
to use it in the scraper, I would have to commit to some serious work.&lt;/p&gt;

&lt;p&gt;Writing Git bindings before even starting to work on the scraper would have
taken too much time.
Nowadays &lt;a href=&quot;http://libgit2.github.com/&quot;&gt;libgit2&lt;/a&gt; could have solved this
but, at the time, this looked like a death blow.&lt;/p&gt;

&lt;h3&gt;Enter Gitrb&lt;/h3&gt;

&lt;p&gt;The vim-scripts project has been amazingly lucky a few times in its
history.  Just when everything looked bleak and it was time
to pack it in, along would come a person or a gem that put things
back on track.  In this case it was Daniel Mendler's
&lt;a href=&quot;https://github.com/minad/gitrb&quot;&gt;gitrb&lt;/a&gt; gem.&lt;/p&gt;

&lt;p&gt;Gitrb is a real, object-based API in 100% Ruby that directly manipulates the
on-disk Git repository.  It's fast, it's easy to use, it's even
kind of fun.  The few
issues that I found were easy to solve and Daniel was very responsive to
modifications.  The scraper was rolling again.&lt;/p&gt;

&lt;p&gt;One of the issues that I ran into was that Gitrb produced invalid time zones in the
western hemisphere: --700, which git would immediately refuse.
It's easy to understand, Daniel lives to the east of the Meridian.
No problem, a
&lt;a href=&quot;https://github.com/minad/gitrb/commit/c409985f0fe88993a76a0f3b46528b9cc9bf4eda&quot;&gt;quick patch,&lt;/a&gt;
and git is happy with time zones of -700.&lt;/p&gt;

&lt;h3&gt;The Bug Comes Home&lt;/h3&gt;

&lt;p&gt;Fast-forward nine months.  Nine wonderful months free of git-related issues.&lt;/p&gt;

&lt;p&gt;Just as the &lt;a href=&quot;/news/2011/06/12/rss-gone.html&quot;&gt;RSS feed comes back online&lt;/a&gt;,
GitHub starts refusing every push we make.  It took a while to find
the problem because
git log --pretty=fuller shows the correct -0700 time zone.  It's only when you
use git log --pretty=raw that the horrifying truth becomes apparent.&lt;/p&gt;

&lt;p&gt;Git didn't care before.
The check was
&lt;a href=&quot;https://github.com/git/git/commit/daae19224a05be9efb9a39c2a2c1c9a60fe906f1&quot;&gt;added in April 2010,&lt;/a&gt;
a month before I wrote the Gitrb time zone fix.&lt;/p&gt;

&lt;p&gt;Fixing gitrb
&lt;a href=&quot;https://github.com/minad/gitrb/pull/11&quot;&gt;was easy.&lt;/a&gt;
Fixing all the broken repos, now that's going to be a challenge.&lt;/p&gt;

&lt;h3&gt;What Does it Mean?&lt;/h3&gt;

&lt;p&gt;Well, nothing needs to change immediately.  Thanks to Bundler, the scraper started
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/26aa456419ec10276887b4565c8e70fd93499bab&quot;&gt;using the fixed gitrb&lt;/a&gt;
right away.  GitHub is accepting the fixed commits and we should be caught up in a day
(update: 4 hours later, we're caught up).&lt;/p&gt;

&lt;p&gt;Of course, we still need a proper fix.  The only way that I see is to regenerate
every repository and re-upload everything to github.
This is not unprecedented.  We did it back in October 2010
(&lt;a href=&quot;news/2010/10/19/upload-finished.html&quot;&gt;start&lt;/a&gt;,
&lt;a href=&quot;/news/2010/10/19/upload-finished.html&quot;&gt;finish&lt;/a&gt;),
before beta, when the scraper had become much smarter at parsing dates and email addresses.&lt;/p&gt;

&lt;p&gt;Of course, that would mean that all local repos will have to be deleted
and re-cloned.
That should be fairly painless if you're using
&lt;a href=&quot;https://github.com/gmarik/vundle&quot;&gt;Vundle&lt;/a&gt;
or
&lt;a href=&quot;https://github.com/bronson/vim-update-bundles/&quot;&gt;vim-update-bundles&lt;/a&gt;.
For people maintaining their plugins by hand, though, this might be
an unpleasant surprise.&lt;/p&gt;

&lt;p&gt;Luckily, we don't have to do anything immediately.  We will take the time
to implement the proper fix, whatever it turns out to be.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Archive Armageddon</title>
   <link href="/news/2011/06/23/archive-armageddon.html"/>
   <updated>2011-06-23T00:00:00-07:00</updated>
   <id>/news/2011/06/23/archive-armageddon</id>
   <content type="html">&lt;p&gt;This is a quick description of two scraper stalls that happened in May.&lt;/p&gt;

&lt;p&gt;Earlier we &lt;a href=&quot;/news/2011/06/03/scraper-stalls.html&quot;&gt;discussed scraper stalls&lt;/a&gt;
and how they prevent bugs from slipping through the cracks.
This post talks about two specific stalls from mid-March.
If it seems like old news, that's because this post has been sitting
half-written since June 3, silently ignored as all sorts of weird
and wonderful new ways to stall the scraper have been discovered.&lt;/p&gt;

&lt;h2&gt;Sensing Files&lt;/h2&gt;

&lt;p&gt;A script author uploads a text file or an archive to vim.org, the
scraper downloads it and stuffs it into a git repository, and
Bob's your uncle.  No problem!&lt;/p&gt;

&lt;p&gt;The trick is, mistakes run wild on vim.org.  The scraper needs to try
to clean things up.  And that quickly turns into guesswork.&lt;/p&gt;

&lt;p&gt;The most common mistake script authors make is putting the wrong
extensions on the files they upload.
A .tgz is not actually gzipped, a .bz2 is actually gzipped, and so on.&lt;/p&gt;

&lt;p&gt;We can sniff the file's
&lt;a href=&quot;http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html#id2820544&quot;&gt;magic&lt;/a&gt;
to discover what it &lt;em&gt;really&lt;/em&gt; is
but that's
&lt;a href=&quot;https://github.com/minad/mimemagic/issues/1&quot;&gt;often&lt;/a&gt;
&lt;a href=&quot;https://github.com/minad/mimemagic/issues/4&quot;&gt;wrong&lt;/a&gt; too!
Besides, Java jarfiles sniff as zipfiles, some archive formats
sniff as the files they contain, and so on.
While it's more reliable than the file's extension, it turns out
we can't rely on file magic either.&lt;/p&gt;

&lt;p&gt;The solution to this problem has produced the most complex part of the scraper:
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/blob/1805e760f0d28d0a299e21e11c1950b90149f8c1/scraper#L1033&quot;&gt;the sense_file routine&lt;/a&gt;.
It tries to reconcile the file's extension and magic to determine
the best way to handle it.
Grown through tedious trial and error, sense_file has become big and ugly
but, implausibly, it almost always works.&lt;/p&gt;

&lt;h3&gt;The Case of the Misleading Extension&lt;/h3&gt;

&lt;p&gt;In mid-May, a script author uploaded a .tgz file that was only tar encoded.
The scraper didn't anticipate this, couldn't figure out which claim to trust,
so it bailed out.&lt;/p&gt;

&lt;p&gt;I'm surprised it took this long for this particular mistake to show up!
I would have bet money that someone would have done it before 2005.&lt;/p&gt;

&lt;p&gt;This was
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/203b1c40164eb62d9e6bb278fc9f864a25f6bd3e&quot;&gt;easy to solve&lt;/a&gt;
once it was clear what was going on.
Result: a 15 minute fix and a 2 day stall.&lt;/p&gt;

&lt;h2&gt;Archive Formats&lt;/h2&gt;

&lt;p&gt;Most of the complexity may be in the sense_file routine (above),
but most of the time spent coding the scraper has gone into
figuring out just how to expand all the grotty archive formats on vim.org.
They have .zip, .tar, .tar.gz, .tar.bz2, .xz, .7z, .rar, .vba, and so on
With 12,000 files written by 1800 authors, there are going to be a lot of
incompatible, corrupt, and just plain weird files to figure out.&lt;/p&gt;

&lt;p&gt;Zip and vimball are tied for the most heinous of all.
We'll talk about zip because it's common, interesting, and caused the
longest stall in May.  Let's hope that we never have the need to
discuss vimball (though you can grep the scraper's commit history for
'vimball' if you're morbidly curious).&lt;/p&gt;

&lt;h3&gt;Zip a Dip&lt;/h3&gt;

&lt;p&gt;Way back in history, before vim-scripts was public, the scraper
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/c3ced2a81a2e4d214b72f5a0c779d38a6850d712&quot;&gt;used&lt;/a&gt;
the &lt;a href=&quot;http://rubyzip.sourceforge.net/&quot;&gt;Rubyzip gem&lt;/a&gt; to unzip files.
Unfortunately, Rubyzip has an
&lt;a href=&quot;http://www.ruby-forum.com/topic/211146#936159&quot;&gt;obscure bug&lt;/a&gt; that
is unlikely to ever be fixed.
This project means well but will never be mature enough to handle
the variety of zipfiles that we're processing.&lt;/p&gt;

&lt;p&gt;So, throw that code out and try again.&lt;/p&gt;

&lt;p&gt;The scraper was &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/6566011e0c12883ad5df313e130afa8f72f8d2db&quot;&gt;converted&lt;/a&gt;
to shell out to the system's unzip command.
This was hugely more reliable.
The lesson is clear: whenever possible, use the same tool everyone else is using.
Especially when you're dealing with a lot of crazy data, code maturity
trumps pretty much everything else.&lt;/p&gt;

&lt;p&gt;That said, even unzip needed
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/8627a4d17abe5a8ffd55d4874c4cc3280578dc29&quot;&gt;some workarounds&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;On Unixy systems, unzip tends to be a variant of the venerable
&lt;a href=&quot;ftp://ftp.info-zip.org/pub/infozip/src/&quot;&gt;Infozip&lt;/a&gt; command.
This code base dates all the way back to the 80s (remember far ptrs?).
It's beautifully stable but maintenance appears to be light and sporadic.
And the code, oh the code...  *shudder*  If you want to remember
what conditional macro hell was like, browse the Infozip source.&lt;/p&gt;

&lt;p&gt;Anyhow, that worked swimmingly for nine months.
Then, a week ago, a script author uploaded
the first zipfile that Infozip can't handle:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;skipping: plugin/checklist.vim    need PK compat. v6.3 (can do v4.6)
skipping: readme.markdown         need PK compat. v6.3 (can do v4.6)
skipping: syntax/chklst.vim       need PK compat. v6.3 (can do v4.6)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Back in 2006, pkware
&lt;a href=&quot;http://www.pkware.com/documents/casestudies/APPNOTE.TXT&quot;&gt;updated the zipfile specification&lt;/a&gt;
and Infozip still can't handle it.
And, given its slow rate of development,
6.3 compatibility is probably years away.
Time to find another unzipper!&lt;/p&gt;

&lt;p&gt;It turns out &lt;a href=&quot;http://www.7-zip.org/&quot;&gt;Igor Pavlov's 7-zip&lt;/a&gt;
utility can uncompress zipfiles, handles the new format,
and the scraper is already using it to uncompress .7z files anyway!
With just a small tweak we can use 7z for all zipfiles.&lt;/p&gt;

&lt;p&gt;Unfortunatley, 7z can't reliably unzip DOS archives that
use '\' as a path separator.
There are currently seven zipfiles in the archives that 7z can't uncompress.
This looks easy to fix so I've filed a
&lt;a href=&quot;https://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=3310980&amp;amp;group_id=14481&amp;amp;atid=114481#&quot;&gt;feature request&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But, once again, that leaves us with a compromise to make.
For now, the scraper will continue to use Infozip to unzip
regular zipfiles and
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/cee66a5052bf52a2c111af1e02a57aaf0c13085a&quot;&gt;special case&lt;/a&gt;
any new zipfiles that Infozip can't handle.  (If a v6.3 zipfile
that uses '\' as a path separator shows up then we're hosed).&lt;/p&gt;

&lt;p&gt;When the newer zip format becomes more widely used and the special-case
list is getting too long, we can switch to
using 7z by default and then hard-code the seven files that require Infozip.
Another approach would be to sniff the zipfile to see what path separator
it's using and then use that to determine which unzipper to use.&lt;/p&gt;

&lt;p&gt;With a little time and luck, hopefully the feature request will receive some
love, 7z will properly handle all zipfiles, and there will be no need
to special-case anything anymore.&lt;/p&gt;

&lt;p&gt;And that's how a small scraper stall can turn into a big research project!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Vim.org RSS Errors</title>
   <link href="/news/2011/06/12/rss-gone.html"/>
   <updated>2011-06-12T00:00:00-07:00</updated>
   <id>/news/2011/06/12/rss-gone</id>
   <content type="html">&lt;p&gt;As mentioned in the previous news posting, the scraper uses the RSS
feed to discover which scripts have been updated.&lt;/p&gt;

&lt;p&gt;Unfortunately, for the past few days, vim.org's
&lt;a href=&quot;http://feed43.com/vim-scripts.xml&quot;&gt;RSS Feed&lt;/a&gt;
has been producing an error page.
&lt;a href=&quot;http://vim.org&quot;&gt;vim.org&lt;/a&gt; is still up, so authors are still
writing and uploading scripts, we just can't figure out which ones.&lt;/p&gt;

&lt;p&gt;Not unless we download all 3622 scripts one by one.
It's possible, and we'll do it, but it takes a
lot more time and bandwidth.&lt;/p&gt;

&lt;p&gt;This means that, until vim.org's RSS feed returns, updates will still happen
but they will be a lot slower!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Scraper Stalls</title>
   <link href="/news/2011/06/03/scraper-stalls.html"/>
   <updated>2011-06-03T00:00:00-07:00</updated>
   <id>/news/2011/06/03/scraper-stalls</id>
   <content type="html">&lt;p&gt;Observant vim-scripts users
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/issues/32&quot;&gt;noticed&lt;/a&gt;
that recently the scraper was stalled for 3 weeks.
The problems that caused this have been fixed and the scraper is rolling again.&lt;/p&gt;

&lt;p&gt;While a three week outage is never good,
the occasional outage is expected and even a sign of health.
If you're interested, here's a bit more about why the scraper stalls.&lt;/p&gt;

&lt;h3&gt;Whence Stalls&lt;/h3&gt;

&lt;p&gt;The scraper watches &lt;a href=&quot;http://feed43.com/vim-scripts.xml&quot;&gt;vim.org's RSS feed&lt;/a&gt;,
processes the updated scripts, and goes back to sleep.  If there's a problem,
it bails out and refuses to process any more scripts until a human
intervenes and fixes the problem.&lt;/p&gt;

&lt;p&gt;Why not just skip the offending script and keep on scraping?
Surely a coauthor of the
&lt;a href=&quot;https://github.com/bronson/retryable&quot;&gt;Retryable&lt;/a&gt;
gem knows how to rescue from exceptions!
Let the scraper keep churning, ignore the broken script,
and it would take months for anyone to notice or care that anything is wrong.&lt;/p&gt;

&lt;p&gt;Here's the catch: fixing scraper issues can get pretty tedious.
It's not easy to find time to debug code, especially when most of the
time it turns out to be nothing more than a .zip extension
on an uncompressed .gif.&lt;/p&gt;

&lt;p&gt;Programmers have lots of cool things to work on.
You need to yell pretty loud if you want to attract their attention.&lt;/p&gt;

&lt;p&gt;So, for the sake of argument, let's say the scraper just kept on cruising.
Every week or two another script author finds a new way of breaking things
and a few more scripts fail.  Unless it's a high profile script like rails.vim,
no maintainer shows up to mend the problems.  After some difficult years, the scraper
finds that it can
only scrape &lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=273&quot;&gt;taglist.vim&lt;/a&gt;.
No maintainer is willing to devote the man month of time to repair the hundreds
of small problems everywhere.
Suddenly finding itself friendless and jobless, unforked and unloved,
the scraper sits forever idle on GitHub.&lt;/p&gt;

&lt;h5&gt;The Upshot&lt;/h5&gt;

&lt;p&gt;The scraper walks a fine line: it needs to ensure its problems are
big enough to get fixed and yet small enough to be fixable.
That's why it yells loud and early.
Hopefully the problem is small, the fix quick, and the entire project
will be back on track in a day or two.&lt;/p&gt;

&lt;p&gt;Forcing the most reliable behavior in the small picture can
sometimes be destabilizing in the big picture.
NetFlix's &lt;a href=&quot;http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html&quot;&gt;Chaos Monkey&lt;/a&gt;
is another example.  It might be counterintuitive but it certainly seems to work.&lt;/p&gt;

&lt;p&gt;And that's why scraper stalls are a normal part of life.
They happen occasionally, get crushed like a minor irritation,
and things go back to normal.&lt;/p&gt;

&lt;p&gt;If you notice a stall, first smile because it's an indication that
script authors are innovating.  Vim is still thriving.
Then, if nothing appears to be happening, help the scraper yell for help.&lt;/p&gt;

&lt;h3&gt;Postscript&lt;/h3&gt;

&lt;p&gt;I must say, I'm surprised that vim-scripts works as well as it does.  Web scraping is
messy business that continually breaks at random and inopportune times.
Add to that the complete free-for-all that is vim.org/scripts
(rename your script at any time, invent your own way of deleting your scripts,
no standard archive or plugin format, etc) and, in theory, you have an inky soup that just won't
convert into Pathogened git repositories.  Last August I was starting to worry
that every morning I would wake up and immediately need to fix all the
scrape problems created uring the previous day.&lt;/p&gt;

&lt;p&gt;Happily, script authors tend to make the same mistakes and find the same solutions as one other.
If I find a workaround for one script, ten unrelated scripts might be also be fixed (five
of which haven't even been written yet).&lt;/p&gt;

&lt;p&gt;It was rocky going at first, but once the scraper reached a certain maturity,
it proved that it could wade through the soup almost completely on its own.&lt;/p&gt;

&lt;p&gt;Of course, the scraper will never be complete, and there will always be stalls.
But, when I go on a two week vacation, I'll be surprised if things are
stalled when I get back.  And that's good enough!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Planned Outage Sunday Night</title>
   <link href="/news/2011/04/08/planned-outage.html"/>
   <updated>2011-04-08T00:00:00-07:00</updated>
   <id>/news/2011/04/08/planned-outage</id>
   <content type="html">&lt;p&gt;vim-scripts.org will be down for 1/2 hour on Sunday night Pacific time.
We will move the
&lt;a href=&quot;https://github.com/vim-scripts/vim-scripts.github.com&quot;&gt;last non-script repository&lt;/a&gt;
out of the GitHub &lt;a href=&quot;https://github.com/vim-scripts&quot;&gt;vim-scripts account&lt;/a&gt;.
When finished, the vim-scripts account will contain 100% scripts and
its RSS feed will contain 100% script news.&lt;/p&gt;

&lt;p&gt;The catch is, of course, that the one remaining repository is the
one hosting vim-scripts.org.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Comments Are Live</title>
   <link href="/news/2011/03/21/the-comments-are-live.html"/>
   <updated>2011-03-21T00:00:00-07:00</updated>
   <id>/news/2011/03/21/the-comments-are-live</id>
   <content type="html">&lt;p&gt;Discuss.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Combining Issue Trackers</title>
   <link href="/news/2011/03/21/issues-are-moving.html"/>
   <updated>2011-03-21T00:00:00-07:00</updated>
   <id>/news/2011/03/21/issues-are-moving</id>
   <content type="html">&lt;p&gt;vim-scripts.org used to have one issue tracker for the website and another
issue tracker for the scraping robot.  Turns out this was needlessly confusing.
The issues for the website have been merged into the scraper and
now there is a single issue tracker for the entire project.&lt;/p&gt;

&lt;p&gt;The issue tracker is also being moved from the vim-scripts account
to &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/issues&quot;&gt;vim-scraper&lt;/a&gt; (the
&lt;a href=&quot;http://support.github.com/discussions/issues-issues/557-please-move-vim-scriptsvim-scraper-to-vim-scrapervim-scraper&quot;&gt;GitHub support request&lt;/a&gt;).
If the &lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/issues&quot;&gt;vim-scraper&lt;/a&gt; link 404s, then the move hasn't happened yet.
If it resolves then the move is complete.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;UPDATE&lt;/em&gt;: The move is done.  Thanks GitHub!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Unfuddling Email Addresses</title>
   <link href="/news/2011/02/20/email-unfuddled.html"/>
   <updated>2011-02-20T00:00:00-08:00</updated>
   <id>/news/2011/02/20/email-unfuddled</id>
   <content type="html">&lt;p&gt;Some time around February 15, vim.org modified the way it presents
the email adddresses of script authors.  They just replaced @ and .
with images, but this caused the vim-scripts.org scraper to
push 29 invalid repositories before it could be
&lt;a href=&quot;https://github.com/vim-scraper/vim-scraper/commit/938d48b062f4f5b242a8787d3ecb30662bcb2e59&quot;&gt;worked around&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The following scripts have been fixed and re-uploaded:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;activity-log&lt;/li&gt;
&lt;li&gt;AuthorInfo&lt;/li&gt;
&lt;li&gt;CCTree&lt;/li&gt;
&lt;li&gt;Chess-files-.pgn-extension&lt;/li&gt;
&lt;li&gt;ColorSelect&lt;/li&gt;
&lt;li&gt;csindent.vim&lt;/li&gt;
&lt;li&gt;css3&lt;/li&gt;
&lt;li&gt;csv.vim&lt;/li&gt;
&lt;li&gt;CTAGS-Highlighting&lt;/li&gt;
&lt;li&gt;earendel&lt;/li&gt;
&lt;li&gt;fecompressor.vim&lt;/li&gt;
&lt;li&gt;Flog&lt;/li&gt;
&lt;li&gt;funprototypes.vim&lt;/li&gt;
&lt;li&gt;gtk-vim-syntax&lt;/li&gt;
&lt;li&gt;Headlights&lt;/li&gt;
&lt;li&gt;Hoogle&lt;/li&gt;
&lt;li&gt;IniParser&lt;/li&gt;
&lt;li&gt;iptables&lt;/li&gt;
&lt;li&gt;lexctwolc-Syntax-Highlighter&lt;/li&gt;
&lt;li&gt;LispXp&lt;/li&gt;
&lt;li&gt;Lucius&lt;/li&gt;
&lt;li&gt;mxl.vim&lt;/li&gt;
&lt;li&gt;powershellCall&lt;/li&gt;
&lt;li&gt;SuperTab-continued.&lt;/li&gt;
&lt;li&gt;taskpaper.vim&lt;/li&gt;
&lt;li&gt;utlx_interwiki.vim&lt;/li&gt;
&lt;li&gt;VimCalc&lt;/li&gt;
&lt;li&gt;vim-paint&lt;/li&gt;
&lt;li&gt;vundle&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;There are a number of other changes
(&lt;a href=&quot;https://github.com/crissmancd/vim_scripts_redesign&quot;&gt;like this&lt;/a&gt;)
queued up for vim-scripts.org but $dayjob has been taking up a lot of time.
Big thanks to gmarik for keeping keeping the fires burning.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>No Apple Files Part 2</title>
   <link href="/news/2010/11/23/no-apple-files-2.html"/>
   <updated>2010-11-23T00:00:00-08:00</updated>
   <id>/news/2010/11/23/no-apple-files-2</id>
   <content type="html">&lt;p&gt;The &lt;a href=&quot;/news/2010/11/15/no-apple-files.html&quot;&gt;previous attempt&lt;/a&gt;
at eradicating bogus Apple files didn't quite
get all of them.  In addition to removing .DS_Store and ._DS_Store
files, now we remove all ._* files too.&lt;/p&gt;

&lt;p&gt;The following scripts were affected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CodeOverview&lt;/li&gt;
&lt;li&gt;PIV&lt;/li&gt;
&lt;li&gt;cuteErrorMarker&lt;/li&gt;
&lt;li&gt;slurper.vim&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;With this change, the Scraper now produces the exact same results on
both Linux and MacOS.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Scraper Code Moved</title>
   <link href="/news/2010/11/22/code-moved.html"/>
   <updated>2010-11-22T00:00:00-08:00</updated>
   <id>/news/2010/11/22/code-moved</id>
   <content type="html">&lt;p&gt;The scraper and its associated script and data files change
with pretty much every scrape.  They always bounce
to the top of the newsfeed, drowning out the rest of scripts.&lt;/p&gt;

&lt;p&gt;To address this, the scraper's code has been moved to the
&lt;a href=&quot;http://github.com/vim-scraper/&quot;&gt;vim-scraper&lt;/a&gt; user.
The &lt;a href=&quot;http://github.com/vim-scripts/vim-scraper/&quot;&gt;old repo&lt;/a&gt;,
owned by the &lt;a href=&quot;http://github.com/vim-scripts/&quot;&gt;vim-scripts&lt;/a&gt; user,
still exists but only so its &lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/issues&quot;&gt;issues&lt;/a&gt;
don't get deleted.  Since it's not receiving any more commits,
it will no longer be a prominent news non-item.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/vim-scripts/vim-scripts.github.com&quot;&gt;jekyll pages&lt;/a&gt;
are also noisy, and haven't been moved either.&lt;/p&gt;

&lt;p&gt;Other than these two repositories, however, vim-scripts is now 100% scripts!
The &lt;a href=&quot;https://github.com/vim-scripts.atom&quot;&gt;news feed&lt;/a&gt; should be a lot quieter.&lt;/p&gt;

&lt;p&gt;Also, in unrelated news, :REPL has been renamed to REPL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1903 - REPL&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Suppress Apple DS_Store Files</title>
   <link href="/news/2010/11/15/no-apple-files.html"/>
   <updated>2010-11-15T00:00:00-08:00</updated>
   <id>/news/2010/11/15/no-apple-files</id>
   <content type="html">&lt;p&gt;Apple software creates
&lt;a href=&quot;http://en.wikipedia.org/wiki/.DS_Store&quot;&gt;Desktop Services Store&lt;/a&gt;
files to keep track of folder locations and icons.
Since they're not needed in Vim scripts, the scraper removes them.&lt;/p&gt;

&lt;p&gt;The plugins that no longer carry .DS_Store files:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1929 - DBGp-client&lt;/li&gt;
&lt;li&gt;2424 - Transmit-FTP&lt;/li&gt;
&lt;li&gt;2441 - pyflakes.vim&lt;/li&gt;
&lt;li&gt;2507 - 0scan&lt;/li&gt;
&lt;li&gt;2540 - snipMate&lt;/li&gt;
&lt;li&gt;2674 - cocoa.vim&lt;/li&gt;
&lt;li&gt;2813 - MailApp&lt;/li&gt;
&lt;li&gt;2852 - perlomni.vim&lt;/li&gt;
&lt;li&gt;2883 - growlnotify.vim&lt;/li&gt;
&lt;li&gt;2890 - slurper.vim&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, minor fixups to two scripts: put tags on the correct commits,
and change 'Syntax' to 'syntax' so the script will work
on case-sensitive filesystems too.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0790 - python.vim--Vasiliev&lt;/li&gt;
&lt;li&gt;2651 - fitnesse.vim&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Trimming Archive Hierarchy Revisited</title>
   <link href="/news/2010/11/15/hierarchy-fix-part-2.html"/>
   <updated>2010-11-15T00:00:00-08:00</updated>
   <id>/news/2010/11/15/hierarchy-fix-part-2</id>
   <content type="html">&lt;p&gt;Thanks to an
&lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/commit/f90f0f791d365da3176b7dd9d2b518987b57dfa6&quot;&gt;imprecise regex&lt;/a&gt;
in the
&lt;a href=&quot;/news/2010/11/13/remove-needless-dirs.html&quot;&gt;hierarchy fix&lt;/a&gt;,
the scraper didn't repair as many scripts as it could have.&lt;/p&gt;

&lt;p&gt;The following scripts have had their hierarchies fixed even more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0775 - vimcdoc&lt;/li&gt;
&lt;li&gt;0860 - inform.vim&lt;/li&gt;
&lt;li&gt;1000 - gtk-vim-syntax&lt;/li&gt;
&lt;li&gt;1431 - checksyntax-B&lt;/li&gt;
&lt;li&gt;1616 - tdl.vim&lt;/li&gt;
&lt;li&gt;1770 - etk-vim-syntax&lt;/li&gt;
&lt;li&gt;1795 - autoloadTemplate.vim&lt;/li&gt;
&lt;li&gt;1929 - DBGp-client&lt;/li&gt;
&lt;li&gt;2011 - dbext4rdb&lt;/li&gt;
&lt;li&gt;2301 - Gembase-dml-plugins&lt;/li&gt;
&lt;li&gt;2484 - textobj-indent&lt;/li&gt;
&lt;li&gt;2627 - exVim&lt;/li&gt;
&lt;li&gt;2665 - HtmlHelper&lt;/li&gt;
&lt;li&gt;2700 - PKGBUILD&lt;/li&gt;
&lt;li&gt;2716 - textobj-syntax&lt;/li&gt;
&lt;li&gt;2743 - greek_polytonic.vim&lt;/li&gt;
&lt;li&gt;2905 - vim-addon-manager&lt;/li&gt;
&lt;li&gt;3027 - grsecurity&lt;/li&gt;
&lt;li&gt;3081 - JavaScript-Indent&lt;/li&gt;
&lt;li&gt;3227 - Simple-Javascript-Indenter&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, two horribly broken vimballs have
&lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/commit/348ec7961a42c95f25d9263dd4703f0664273877&quot;&gt;been suppressed&lt;/a&gt;
from NrrwRgn.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3075 - NrrwRgn&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Trimming Archive Hierarchy</title>
   <link href="/news/2010/11/13/remove-needless-dirs.html"/>
   <updated>2010-11-13T00:00:00-08:00</updated>
   <id>/news/2010/11/13/remove-needless-dirs</id>
   <content type="html">&lt;p&gt;A small refactoring allows the scraper to be a lot smarter about cleaning
up hierarchies.  What do I mean?  Stuff like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;script-0.1/plugin/script.vim
script-0.1/doc/script.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That leading &quot;script-0.1&quot; should be removed.  It's not easy to determine
which directories can be removed and which ones need to be kept, especially
for a small script scraping robot.  There are as many different ways
of naming directories as there are script authors.&lt;/p&gt;

&lt;p&gt;The following scripts have been fixed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0023 - EnhCommentify.vim&lt;/li&gt;
&lt;li&gt;0067 - nqc.vim&lt;/li&gt;
&lt;li&gt;0090 - vcscommand.vim&lt;/li&gt;
&lt;li&gt;0100 - TagsBase.zip&lt;/li&gt;
&lt;li&gt;0213 - c.vim&lt;/li&gt;
&lt;li&gt;0222 - mu-template&lt;/li&gt;
&lt;li&gt;0280 - netdict&lt;/li&gt;
&lt;li&gt;0300 - Vimacs&lt;/li&gt;
&lt;li&gt;0336 - lh-cpp-ftplugins&lt;/li&gt;
&lt;li&gt;0365 - bash-support.vim&lt;/li&gt;
&lt;li&gt;0391 - LaTeX-functions&lt;/li&gt;
&lt;li&gt;0403 - eruby.vim&lt;/li&gt;
&lt;li&gt;0459 - vim-templates&lt;/li&gt;
&lt;li&gt;0468 - VEC&lt;/li&gt;
&lt;li&gt;0472 - mup.vim&lt;/li&gt;
&lt;li&gt;0556 - perl-support.vim&lt;/li&gt;
&lt;li&gt;0560 - MPD-syntax-highlighting&lt;/li&gt;
&lt;li&gt;0584 - pyljpost.vim&lt;/li&gt;
&lt;li&gt;0663 - VimDebug&lt;/li&gt;
&lt;li&gt;0684 - Comment-Tools&lt;/li&gt;
&lt;li&gt;0722 - cygwin.vim&lt;/li&gt;
&lt;li&gt;0775 - vimcdoc&lt;/li&gt;
&lt;li&gt;0835 - systemc_syntax.tar.gz&lt;/li&gt;
&lt;li&gt;0860 - inform.vim&lt;/li&gt;
&lt;li&gt;0861 - VikiDeplate&lt;/li&gt;
&lt;li&gt;0889 - EvalSelection.vim&lt;/li&gt;
&lt;li&gt;0906 - Editable-User-Interface-EUI-eui_vim&lt;/li&gt;
&lt;li&gt;0922 - svncommand.vim&lt;/li&gt;
&lt;li&gt;0996 - tbf-vimfiles&lt;/li&gt;
&lt;li&gt;1000 - gtk-vim-syntax&lt;/li&gt;
&lt;li&gt;1021 - feralstub.vim&lt;/li&gt;
&lt;li&gt;1030 - scalefont&lt;/li&gt;
&lt;li&gt;1038 - vimgrep.vim&lt;/li&gt;
&lt;li&gt;1039 - array.vim&lt;/li&gt;
&lt;li&gt;1053 - browser.vim&lt;/li&gt;
&lt;li&gt;1054 - InteractHL.vim&lt;/li&gt;
&lt;li&gt;1055 - curBuf.vim&lt;/li&gt;
&lt;li&gt;1059 - pygtk_color&lt;/li&gt;
&lt;li&gt;1060 - Vive.vim&lt;/li&gt;
&lt;li&gt;1095 - TabLaTeX&lt;/li&gt;
&lt;li&gt;1127 - vim2ansi&lt;/li&gt;
&lt;li&gt;1160 - tSkeleton&lt;/li&gt;
&lt;li&gt;1173 - tComment&lt;/li&gt;
&lt;li&gt;1177 - OAL-Syntax&lt;/li&gt;
&lt;li&gt;1196 - omlet.vim&lt;/li&gt;
&lt;li&gt;1232 - DoTagStuff&lt;/li&gt;
&lt;li&gt;1284 - TortoiseSVN.vim&lt;/li&gt;
&lt;li&gt;1306 - cguess&lt;/li&gt;
&lt;li&gt;1311 - vimplate&lt;/li&gt;
&lt;li&gt;1431 - checksyntax-B&lt;/li&gt;
&lt;li&gt;1442 - XML-Completion&lt;/li&gt;
&lt;li&gt;1460 - glark.vim&lt;/li&gt;
&lt;li&gt;1582 - vim-addon-background-cmd&lt;/li&gt;
&lt;li&gt;1584 - Erlang-plugin-package&lt;/li&gt;
&lt;li&gt;1616 - tdl.vim&lt;/li&gt;
&lt;li&gt;1620 - scvim&lt;/li&gt;
&lt;li&gt;1631 - gnuchangelog&lt;/li&gt;
&lt;li&gt;1633 - svncommand-tng&lt;/li&gt;
&lt;li&gt;1694 - SnippetsMgr&lt;/li&gt;
&lt;li&gt;1724 - pyljvim&lt;/li&gt;
&lt;li&gt;1730 - tAssert&lt;/li&gt;
&lt;li&gt;1748 - toggle_word.vim&lt;/li&gt;
&lt;li&gt;1762 - aspnetcs&lt;/li&gt;
&lt;li&gt;1770 - etk-vim-syntax&lt;/li&gt;
&lt;li&gt;1771 - woc&lt;/li&gt;
&lt;li&gt;1810 - Infobasic-Set-Syntax-FTDetect-FTPlugi&lt;/li&gt;
&lt;li&gt;1911 - SuperPre&lt;/li&gt;
&lt;li&gt;1915 - tbibtools&lt;/li&gt;
&lt;li&gt;1929 - DBGp-client&lt;/li&gt;
&lt;li&gt;1939 - autofmt&lt;/li&gt;
&lt;li&gt;1967 - gvim-extensions-for-TALpTAL&lt;/li&gt;
&lt;li&gt;2011 - dbext4rdb&lt;/li&gt;
&lt;li&gt;2040 - tcalc&lt;/li&gt;
&lt;li&gt;2098 - fakeclip&lt;/li&gt;
&lt;li&gt;2100 - textobj-user&lt;/li&gt;
&lt;li&gt;2101 - textobj-datetime&lt;/li&gt;
&lt;li&gt;2114 - Torquescript-syntax-highlighting&lt;/li&gt;
&lt;li&gt;2193 - fpdf.vim&lt;/li&gt;
&lt;li&gt;2213 - VimTAP&lt;/li&gt;
&lt;li&gt;2219 - Limp&lt;/li&gt;
&lt;li&gt;2245 - upf.vim&lt;/li&gt;
&lt;li&gt;2250 - common_vimrc&lt;/li&gt;
&lt;li&gt;2263 - xtemplate&lt;/li&gt;
&lt;li&gt;2275 - textobj-fold&lt;/li&gt;
&lt;li&gt;2276 - textobj-jabraces&lt;/li&gt;
&lt;li&gt;2301 - Gembase-dml-plugins&lt;/li&gt;
&lt;li&gt;2305 - Textile-for-VIM&lt;/li&gt;
&lt;li&gt;2335 - metarw&lt;/li&gt;
&lt;li&gt;2336 - metarw-git&lt;/li&gt;
&lt;li&gt;2337 - ku&lt;/li&gt;
&lt;li&gt;2343 - ku-bundle&lt;/li&gt;
&lt;li&gt;2344 - ku-metarw&lt;/li&gt;
&lt;li&gt;2348 - Chimp&lt;/li&gt;
&lt;li&gt;2355 - textobj-lastpat&lt;/li&gt;
&lt;li&gt;2382 - Note-Maker&lt;/li&gt;
&lt;li&gt;2393 - QuickTemplate&lt;/li&gt;
&lt;li&gt;2410 - ku-args&lt;/li&gt;
&lt;li&gt;2415 - textobj-diff&lt;/li&gt;
&lt;li&gt;2417 - Merb-and-Datamapper&lt;/li&gt;
&lt;li&gt;2425 - arpeggio&lt;/li&gt;
&lt;li&gt;2483 - Gorilla&lt;/li&gt;
&lt;li&gt;2484 - textobj-indent&lt;/li&gt;
&lt;li&gt;2501 - VimClojure&lt;/li&gt;
&lt;li&gt;2523 - Jifty-syntax&lt;/li&gt;
&lt;li&gt;2610 - textobj-entire&lt;/li&gt;
&lt;li&gt;2619 - textobj-function&lt;/li&gt;
&lt;li&gt;2620 - neocomplcache&lt;/li&gt;
&lt;li&gt;2622 - ku-quickfix&lt;/li&gt;
&lt;li&gt;2624 - ProtoDef&lt;/li&gt;
&lt;li&gt;2627 - exVim&lt;/li&gt;
&lt;li&gt;2657 - VOoM&lt;/li&gt;
&lt;li&gt;2665 - HtmlHelper&lt;/li&gt;
&lt;li&gt;2692 - operator-user&lt;/li&gt;
&lt;li&gt;2700 - PKGBUILD&lt;/li&gt;
&lt;li&gt;2715 - UltiSnips&lt;/li&gt;
&lt;li&gt;2716 - textobj-syntax&lt;/li&gt;
&lt;li&gt;2729 - jslint.vim&lt;/li&gt;
&lt;li&gt;2771 - Conque-Shell&lt;/li&gt;
&lt;li&gt;2782 - operator-replace&lt;/li&gt;
&lt;li&gt;2787 - Melt-Vim&lt;/li&gt;
&lt;li&gt;2793 - hybridevel&lt;/li&gt;
&lt;li&gt;2805 - assistant&lt;/li&gt;
&lt;li&gt;2858 - textobj-fatpack&lt;/li&gt;
&lt;li&gt;2877 - spinner.vim&lt;/li&gt;
&lt;li&gt;2878 - RDoc&lt;/li&gt;
&lt;li&gt;2890 - slurper.vim&lt;/li&gt;
&lt;li&gt;2905 - vim-addon-manager&lt;/li&gt;
&lt;li&gt;2907 - hlint&lt;/li&gt;
&lt;li&gt;2933 - vim-addon-fcsh&lt;/li&gt;
&lt;li&gt;2934 - vim-addon-actions&lt;/li&gt;
&lt;li&gt;2940 - vim-addon-mw-utils&lt;/li&gt;
&lt;li&gt;2957 - load_template&lt;/li&gt;
&lt;li&gt;2968 - ikiwiki-nav&lt;/li&gt;
&lt;li&gt;3012 - vspec&lt;/li&gt;
&lt;li&gt;3017 - Cppcheck-compiler&lt;/li&gt;
&lt;li&gt;3020 - EasyOpts&lt;/li&gt;
&lt;li&gt;3069 - Slidedown-Syntax&lt;/li&gt;
&lt;li&gt;3071 - reimin&lt;/li&gt;
&lt;li&gt;3081 - JavaScript-Indent&lt;/li&gt;
&lt;li&gt;3122 - PySuite&lt;/li&gt;
&lt;li&gt;3124 - vim-addon-sbt&lt;/li&gt;
&lt;li&gt;3125 - PIV&lt;/li&gt;
&lt;li&gt;3196 - gedim&lt;/li&gt;
&lt;li&gt;3207 - bundler&lt;/li&gt;
&lt;li&gt;3227 - Simple-Javascript-Indenter&lt;/li&gt;
&lt;li&gt;3264 - Vimtodo&lt;/li&gt;
&lt;li&gt;3290 - RevealExtends&lt;/li&gt;
&lt;li&gt;3293 - numbered&lt;/li&gt;
&lt;li&gt;3303 - smartbd&lt;/li&gt;
&lt;li&gt;3304 - Gundo&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This was the last known big deficiency in the scraper.
Hopefully it only needs minor cleanups from here on out.&lt;/p&gt;

&lt;p&gt;Big thanks to &lt;a href=&quot;https://github.com/rygwdn&quot;&gt;rygwdn&lt;/a&gt;
for &lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/issues/10&quot;&gt;the motivation&lt;/a&gt;
to make this invasive a change.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Suppressing VCS Directories</title>
   <link href="/news/2010/11/13/no-vcs-dirs.html"/>
   <updated>2010-11-13T00:00:00-08:00</updated>
   <id>/news/2010/11/13/no-vcs-dirs</id>
   <content type="html">&lt;p&gt;The scraper now suppresses common VCS dirs (.git, .hg, .bzr, and .svn).
The following scripts were affected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2890 - slurper.vim.stats&lt;/li&gt;
&lt;li&gt;2960 - bisect.stats&lt;/li&gt;
&lt;li&gt;3081 - JavaScript-Indent.stats&lt;/li&gt;
&lt;li&gt;3224 - VIM-Color-Picker.stats&lt;/li&gt;
&lt;li&gt;3310 - gdb4vim.stats&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, to unify some code paths, the scraper
&lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/commit/73797feb69a4870b602d2f33c470ae947c567f67&quot;&gt;no longer uses&lt;/a&gt;
the minitar gem to untar files.
It now shells out to the unix utility, just like it
does for zip, rar, 7z, and xv.
This fixed a single script:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1608 - Chrome syntax script&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;A quick ramble offtopic...  I've had zero troubles with
Ruby's minitar (as opposed to rubyzip, which
&lt;a href=&quot;http://www.ruby-forum.com/topic/211146#936159&quot;&gt;has been painful&lt;/a&gt;),
so it comes as a bit of a surprise to me that it hasn't been doing
a perfect job.  This just reinforces my
suspicion that it's a bad idea to rely on little-used
gems to perform a complex task when you can just shell out
to a tool that's used and tested every day (probably every minute).&lt;/p&gt;

&lt;p&gt;Shell out.  It may not be as pure but it's a heck of a lot more
reliable.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>TeX Script Location</title>
   <link href="/news/2010/11/09/ftplugin-tex.html"/>
   <updated>2010-11-09T00:00:00-08:00</updated>
   <id>/news/2010/11/09/ftplugin-tex</id>
   <content type="html">&lt;p&gt;Thanks to &lt;a href=&quot;https://github.com/DataWraith&quot;&gt;DataWraith&lt;/a&gt;
for &lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/issues/issue/9&quot;&gt;reporting&lt;/a&gt;
that script 284's files weren't in the correct location.
TeX scripts need to go in ftplugin/tex, but the scraper just
put them in ftplugin.&lt;/p&gt;

&lt;p&gt;The two scripts affected by this have been regenerated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0284 - unilatex.vim&lt;/li&gt;
&lt;li&gt;1095 - TabLaTeX&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, it turns out that tex.vim has the wrong script type.  The correct
type is now &lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/commit/12a3e65c72c57f8ef0d19e7745ea28d54f99f5fa&quot;&gt;hard-coded into the scraper&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0093 - tex.vim&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Autoload and After directories</title>
   <link href="/news/2010/11/07/after-files.html"/>
   <updated>2010-11-07T00:00:00-07:00</updated>
   <id>/news/2010/11/07/after-files</id>
   <content type="html">&lt;p&gt;A lot of plugins put files in autoload or after directories, which
are themselves nested in other directories.  This is perfectly valid,
of course, but the scraper tended to move them from autoload/plugin
to the regular plugin directory.&lt;/p&gt;

&lt;p&gt;Fixed now.  These are the affected scripts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0099 - mail.tgz&lt;/li&gt;
&lt;li&gt;0222 - mu-template&lt;/li&gt;
&lt;li&gt;0336 - lh-cpp-ftplugins&lt;/li&gt;
&lt;li&gt;0575 - gnu-c&lt;/li&gt;
&lt;li&gt;0614 - CRefVim&lt;/li&gt;
&lt;li&gt;0835 - systemc_syntax.tar.gz&lt;/li&gt;
&lt;li&gt;1048 - R.vim&lt;/li&gt;
&lt;li&gt;1052 - The-Mail-Suite-tms&lt;/li&gt;
&lt;li&gt;1232 - DoTagStuff&lt;/li&gt;
&lt;li&gt;1291 - luarefvim&lt;/li&gt;
&lt;li&gt;1318 - snippetsEmu&lt;/li&gt;
&lt;li&gt;1442 - XML-Completion&lt;/li&gt;
&lt;li&gt;1520 - OmniCppComplete&lt;/li&gt;
&lt;li&gt;1727 - Templeet&lt;/li&gt;
&lt;li&gt;2099 - xml_autons&lt;/li&gt;
&lt;li&gt;2294 - SwapIt&lt;/li&gt;
&lt;li&gt;2385 - sqlite_c&lt;/li&gt;
&lt;li&gt;2417 - Merb-and-Datamapper&lt;/li&gt;
&lt;li&gt;2495 - Pimp&lt;/li&gt;
&lt;li&gt;2534 - d.vim--Suhoverhov&lt;/li&gt;
&lt;li&gt;2540 - snipMate&lt;/li&gt;
&lt;li&gt;2627 - exVim&lt;/li&gt;
&lt;li&gt;2628 - Vim-R-plugin&lt;/li&gt;
&lt;li&gt;2674 - cocoa.vim&lt;/li&gt;
&lt;li&gt;2740 - vimper&lt;/li&gt;
&lt;li&gt;2935 - superSnipMate&lt;/li&gt;
&lt;li&gt;2954 - hypergit.vim&lt;/li&gt;
&lt;li&gt;3125 - PIV&lt;/li&gt;
&lt;li&gt;3154 - vorax&lt;/li&gt;
&lt;li&gt;3200 - Haskell-Conceal&lt;/li&gt;
&lt;li&gt;3265 - cSyntaxAfter&lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Fixed a Scraper Bug</title>
   <link href="/news/2010/11/06/vim-scraper-bug.html"/>
   <updated>2010-11-06T00:00:00-07:00</updated>
   <id>/news/2010/11/06/vim-scraper-bug</id>
   <content type="html">&lt;p&gt;The scraper
&lt;a href=&quot;https://github.com/vim-scripts/vim-scraper/commit/c280ccf6891141e5e37bd109a9f09496ea2bd24f&quot;&gt;had a bug&lt;/a&gt;
where it would mistakenly think that .vimrc files (or .vimanything) were .vim
files and throw them into plugins.  This missing dollar sign caused 25
scripts to be generated with files in the wrong place.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0213 - c.vim&lt;/li&gt;
&lt;li&gt;0365 - bash-support.vim&lt;/li&gt;
&lt;li&gt;0369 - atomcoder-vim&lt;/li&gt;
&lt;li&gt;0410 - muf.vim&lt;/li&gt;
&lt;li&gt;0517 - TVO--The-Vim-Outliner&lt;/li&gt;
&lt;li&gt;0556 - perl-support.vim&lt;/li&gt;
&lt;li&gt;0570 - GTK-&lt;/li&gt;
&lt;li&gt;0795 - xterm16.vim&lt;/li&gt;
&lt;li&gt;0838 - macro.vim&lt;/li&gt;
&lt;li&gt;1000 - gtk-vim-syntax&lt;/li&gt;
&lt;li&gt;1540 - mousefunc-option-patch&lt;/li&gt;
&lt;li&gt;1541 - GetChar-event-patch&lt;/li&gt;
&lt;li&gt;1770 - etk-vim-syntax&lt;/li&gt;
&lt;li&gt;2126 - accurev&lt;/li&gt;
&lt;li&gt;2145 - GOBject-Builder-gob2&lt;/li&gt;
&lt;li&gt;2304 - vimdb.vim&lt;/li&gt;
&lt;li&gt;2417 - Merb-and-Datamapper&lt;/li&gt;
&lt;li&gt;2502 - fly.vim&lt;/li&gt;
&lt;li&gt;2638 - blogger&lt;/li&gt;
&lt;li&gt;2651 - fitnesse.vim&lt;/li&gt;
&lt;li&gt;2729 - jslint.vim&lt;/li&gt;
&lt;li&gt;2838 - HiVim&lt;/li&gt;
&lt;li&gt;2871 - FindMate&lt;/li&gt;
&lt;li&gt;2885 - gsession.vim&lt;/li&gt;
&lt;li&gt;3147 - wmgraphviz&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;They have been regenerated with everything where it should be.  Delete and re-clone!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Small Fixes for options.vim and Emacs Swap Files</title>
   <link href="/news/2010/11/06/small-fixes.html"/>
   <updated>2010-11-06T00:00:00-07:00</updated>
   <id>/news/2010/11/06/small-fixes</id>
   <content type="html">&lt;p&gt;Some scripts include a file whose name ends in _options.vim that
contains example code that should be copied into your ~/.vimrc file.
The scraper thought that this was plugin in the wrong place
and would move it to the plugin directory.  Now it just leaves _options.vim
files wherever it finds them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1352 - Modelines-Bundle&lt;/li&gt;
&lt;li&gt;1561 - Rainbow-Parenthsis-Bundle&lt;/li&gt;
&lt;li&gt;1609 - Ada-Bundle&lt;/li&gt;
&lt;li&gt;1714 - Tail-Bundle&lt;/li&gt;
&lt;li&gt;1719 - WLS-Mode&lt;/li&gt;
&lt;li&gt;1768 - SnipSnap&lt;/li&gt;
&lt;li&gt;2029 - 4NT-Bundle&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Also, three scripts included Emacs swap files.  The scraper now ignores all
files that end in &quot;~&quot;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0100 - TagsBase.zip&lt;/li&gt;
&lt;li&gt;2838 - HiVim&lt;/li&gt;
&lt;li&gt;2935 - superSnipMate&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The affected repos have been regenerated.  Delete your local copies
and re-clone!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fixing Duplicate Version IDs</title>
   <link href="/news/2010/11/06/duplicate-version-ids.html"/>
   <updated>2010-11-06T00:00:00-07:00</updated>
   <id>/news/2010/11/06/duplicate-version-ids</id>
   <content type="html">&lt;p&gt;The scripts on vim.org are full of releases with the same version number
as the previous release.  The scraper used to drop these release because it
thought it had already imported them.&lt;/p&gt;

&lt;p&gt;The scraper now works around this by appending @1 (or @2 if @1 has already
been taken, and so on) to the duplicate numbers.  They are now unique and
git is happy to tag them.&lt;/p&gt;

&lt;p&gt;Here's an example: &lt;a href=&quot;https://github.com/vim-scripts/jQuery/commit/d321b054770aa9fe713f306cedb5695c1a866bb5&quot;&gt;jQuery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The 90 affected scripts have been regenerated:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;0015 - ccase.vim&lt;/li&gt;
&lt;li&gt;0020 - jcommenter.vim&lt;/li&gt;
&lt;li&gt;0030 - python.vim&lt;/li&gt;
&lt;li&gt;0031 - a.vim&lt;/li&gt;
&lt;li&gt;0072 - foo.vim&lt;/li&gt;
&lt;li&gt;0076 - uri-ref&lt;/li&gt;
&lt;li&gt;0090 - vcscommand.vim&lt;/li&gt;
&lt;li&gt;0096 - methods.vim&lt;/li&gt;
&lt;li&gt;0100 - TagsBase.zip&lt;/li&gt;
&lt;li&gt;0107 - SelectBuf&lt;/li&gt;
&lt;li&gt;0163 - ruby-macros.vim&lt;/li&gt;
&lt;li&gt;0164 - html-macros.vim&lt;/li&gt;
&lt;li&gt;0171 - multvals.vim&lt;/li&gt;
&lt;li&gt;0225 - einstimer.vim&lt;/li&gt;
&lt;li&gt;0229 - searchInRuntime&lt;/li&gt;
&lt;li&gt;0300 - Vimacs&lt;/li&gt;
&lt;li&gt;0360 - rcsdiff.vim&lt;/li&gt;
&lt;li&gt;0415 - Zenburn&lt;/li&gt;
&lt;li&gt;0465 - vimspell&lt;/li&gt;
&lt;li&gt;0508 - ZoomWin&lt;/li&gt;
&lt;li&gt;0528 - mh&lt;/li&gt;
&lt;li&gt;0561 - help.vim&lt;/li&gt;
&lt;li&gt;0563 - rcsvers.vim&lt;/li&gt;
&lt;li&gt;0588 - JavaBrowser&lt;/li&gt;
&lt;li&gt;0724 - trash.vim&lt;/li&gt;
&lt;li&gt;0779 - php_console.vim&lt;/li&gt;
&lt;li&gt;0830 - TT2-syntax&lt;/li&gt;
&lt;li&gt;0923 - timestamp.vim&lt;/li&gt;
&lt;li&gt;0987 - DoxygenToolkit.vim&lt;/li&gt;
&lt;li&gt;1038 - vimgrep.vim&lt;/li&gt;
&lt;li&gt;1053 - browser.vim&lt;/li&gt;
&lt;li&gt;1074 - python_calltips&lt;/li&gt;
&lt;li&gt;1139 - tree&lt;/li&gt;
&lt;li&gt;1149 - GetFDCText.vim&lt;/li&gt;
&lt;li&gt;1213 - Vim-JDE&lt;/li&gt;
&lt;li&gt;1268 - acsb&lt;/li&gt;
&lt;li&gt;1273 - Mathematica-Syntax-File&lt;/li&gt;
&lt;li&gt;1318 - snippetsEmu&lt;/li&gt;
&lt;li&gt;1446 - MoveLine&lt;/li&gt;
&lt;li&gt;1506 - LargeFile&lt;/li&gt;
&lt;li&gt;1535 - TagsParser&lt;/li&gt;
&lt;li&gt;1609 - Ada-Bundle&lt;/li&gt;
&lt;li&gt;1673 - blueprint.vim&lt;/li&gt;
&lt;li&gt;1714 - Tail-Bundle&lt;/li&gt;
&lt;li&gt;1770 - etk-vim-syntax&lt;/li&gt;
&lt;li&gt;1807 - calmar256-lightdark.vim&lt;/li&gt;
&lt;li&gt;1856 - Jinja&lt;/li&gt;
&lt;li&gt;2028 - MarkLines&lt;/li&gt;
&lt;li&gt;2111 - robocom&lt;/li&gt;
&lt;li&gt;2156 - leo256&lt;/li&gt;
&lt;li&gt;2158 - diffchanges.vim&lt;/li&gt;
&lt;li&gt;2208 - Txtfmt-The-Vim-Highlighter&lt;/li&gt;
&lt;li&gt;2257 - bpel.vim&lt;/li&gt;
&lt;li&gt;2286 - Specky&lt;/li&gt;
&lt;li&gt;2301 - Gembase-dml-plugins&lt;/li&gt;
&lt;li&gt;2341 - postmail.vim&lt;/li&gt;
&lt;li&gt;2407 - MatlabFilesEdition&lt;/li&gt;
&lt;li&gt;2413 - Miranda-syntax-highlighting&lt;/li&gt;
&lt;li&gt;2416 - jQuery&lt;/li&gt;
&lt;li&gt;2427 - code_complete-new-update&lt;/li&gt;
&lt;li&gt;2489 - maroloccio2&lt;/li&gt;
&lt;li&gt;2491 - maroloccio3&lt;/li&gt;
&lt;li&gt;2497 - shellinsidevim.vim&lt;/li&gt;
&lt;li&gt;2512 - guepardo.vim&lt;/li&gt;
&lt;li&gt;2535 - cca.vim&lt;/li&gt;
&lt;li&gt;2618 - ctk.vim&lt;/li&gt;
&lt;li&gt;2620 - neocomplcache&lt;/li&gt;
&lt;li&gt;2632 - nimrod.vim&lt;/li&gt;
&lt;li&gt;2658 - Changing-color-script&lt;/li&gt;
&lt;li&gt;2662 - ywvim&lt;/li&gt;
&lt;li&gt;2709 - SudoEdit.vim&lt;/li&gt;
&lt;li&gt;2771 - Conque-Shell&lt;/li&gt;
&lt;li&gt;2792 - perdirvimrc--Autoload-vimrc-files-per-di&lt;/li&gt;
&lt;li&gt;2793 - hybridevel&lt;/li&gt;
&lt;li&gt;2831 - mimicpak&lt;/li&gt;
&lt;li&gt;2843 - FlipLR&lt;/li&gt;
&lt;li&gt;2845 - ywchaos&lt;/li&gt;
&lt;li&gt;2945 - AutomaticTexPlugin&lt;/li&gt;
&lt;li&gt;2954 - hypergit.vim&lt;/li&gt;
&lt;li&gt;2960 - bisect&lt;/li&gt;
&lt;li&gt;2995 - colorselector&lt;/li&gt;
&lt;li&gt;2999 - django-template-textobjects&lt;/li&gt;
&lt;li&gt;3005 - simplecommenter&lt;/li&gt;
&lt;li&gt;3056 - Translit3&lt;/li&gt;
&lt;li&gt;3081 - JavaScript-Indent&lt;/li&gt;
&lt;li&gt;3164 - pythondo&lt;/li&gt;
&lt;li&gt;3188 - vimcompcrtr&lt;/li&gt;
&lt;li&gt;3199 - vim-addon-ocaml&lt;/li&gt;
&lt;li&gt;3244 - Timer-routine&lt;/li&gt;
&lt;li&gt;3257 - Say-Time&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;And script 2792 with that long and truncated name?  That is its name
on vim.org!&lt;/p&gt;
</content>
 </entry>
 

</feed>
