Compare commits

...

15 Commits

Author SHA1 Message Date
Adam Stankiewicz
e69f9f91d9 fix: README formatting 2013-09-16 17:02:09 +02:00
Adam Stankiewicz
c37e16fbbd Mention about real startup cost 2013-09-16 16:59:43 +02:00
Adam Stankiewicz
d7873996b4 Concat ftdetect scripts and mention startup cost in the README 2013-09-16 16:54:16 +02:00
Adam Stankiewicz
73cbf0269e Merge pull request #5 from bitdeli-chef/master
Add a Bitdeli Badge to README
2013-09-16 01:00:53 -07:00
Bitdeli Chef
0077bd5a31 Add a Bitdeli badge to README 2013-09-16 08:00:48 +00:00
Adam Stankiewicz
e8c16931f9 Update stylus and clojure syntaxes 2013-09-16 02:07:41 +02:00
Adam Stankiewicz
752a647be1 fix: Use bash for build script 2013-09-14 20:48:46 +02:00
Adam Stankiewicz
97a0bdcef6 fix: Build spec, use bash, check return status 2013-09-14 20:46:47 +02:00
Adam Stankiewicz
58f119c57f Fix url in the README
[skip ci]
2013-09-14 20:43:34 +02:00
Adam Stankiewicz
0ac0389039 Add simple spec for build script 2013-09-14 20:42:27 +02:00
Adam Stankiewicz
4bf3f6c300 Add travis badge and additional info in features 2013-09-14 20:30:57 +02:00
Adam Stankiewicz
4a80e945ad Add Travis CI integration 2013-09-14 20:23:24 +02:00
Adam Stankiewicz
27f22774b1 Move specs location one level down 2013-09-14 20:20:59 +02:00
Adam Stankiewicz
f6be1d3d13 Reorganize build script a little 2013-09-14 20:10:55 +02:00
Adam Stankiewicz
77f091c8c7 Add specs to be sure all plugins are loading properly 2013-09-14 20:09:32 +02:00
38 changed files with 261 additions and 249 deletions

8
.travis.yml Normal file
View File

@@ -0,0 +1,8 @@
language: ruby
rvm:
- 1.9.3
before_install: sudo apt-get install vim-gtk
before_script:
- "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start"
script: bundle exec rspec

4
Gemfile Normal file
View File

@@ -0,0 +1,4 @@
source 'https://rubygems.org'
gem 'vimrunner'
gem 'rspec'

20
Gemfile.lock Normal file
View File

@@ -0,0 +1,20 @@
GEM
remote: https://rubygems.org/
specs:
diff-lcs (1.1.3)
rspec (2.12.0)
rspec-core (~> 2.12.0)
rspec-expectations (~> 2.12.0)
rspec-mocks (~> 2.12.0)
rspec-core (2.12.2)
rspec-expectations (2.12.1)
diff-lcs (~> 1.1.3)
rspec-mocks (2.12.0)
vimrunner (0.3.0)
PLATFORMS
ruby
DEPENDENCIES
rspec
vimrunner

View File

@@ -1,14 +1,20 @@
# vim-polyglot
# vim-polyglot [![Build Status][travis-img-url]][travis-url]
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.png
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
A collection of language packs for Vim.
One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as all files are loaded only on demand.
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged.
- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support).
- Best syntax and indentation support. If someone releases better language pack, it will be replaced here.
- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though).
- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory.
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
## Installation
@@ -72,3 +78,7 @@ Feel free to add your language, and send pull-request.
## License
See linked repositories for detailed license information.
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sheerun/vim-polyglot/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

15
build
View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/usr/bin/env bash
set -E
@@ -50,9 +50,11 @@ copy_dir() {
done
}
rm -rf tmp
rm -rf $DIRS
mkdir -p tmp
concat_ftdetect() {
cat ftdetect/* | grep -E '^[^"]' > tmp/polyglot.vim
rm -f ftdetect/*
mv tmp/polyglot.vim ftdetect/
}
PACKS="
arduino:sudar/vim-arduino-syntax
@@ -100,8 +102,13 @@ PACKS="
xls:vim-scripts/XSLT-syntax
"
rm -rf tmp
rm -rf $DIRS
mkdir -p tmp
printf "Downloading packs..."
download "$PACKS"
extract "$PACKS"
concat_ftdetect
rm -rf tmp

View File

@@ -1 +0,0 @@
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino

View File

@@ -1 +0,0 @@
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure

View File

@@ -1,17 +0,0 @@
" Language: CoffeeScript
" Maintainer: Mick Koch <kchmck@gmail.com>
" URL: http://github.com/kchmck/vim-coffee-script
" License: WTFPL
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
autocmd BufNewFile,BufRead *._coffee set filetype=coffee
function! s:DetectCoffee()
if getline(1) =~ '^#!.*\<coffee\>'
set filetype=coffee
endif
endfunction
autocmd BufNewFile,BufRead * call s:DetectCoffee()

View File

@@ -1,3 +0,0 @@
" Install Filetype detection for CSV files
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv

View File

@@ -1,2 +0,0 @@
" Cucumber
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber

View File

@@ -1,2 +0,0 @@
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?

View File

@@ -1,20 +0,0 @@
" Git
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
autocmd BufNewFile,BufRead .msg.[0-9]*
\ if getline(1) =~ '^From.*# This line is ignored.$' |
\ set ft=gitsendemail |
\ endif
autocmd BufNewFile,BufRead *.git/**
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
\ set ft=git |
\ endif
" This logic really belongs in scripts.vim
autocmd BufNewFile,BufRead,StdinReadPost *
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
\ set ft=git |
\ endif

View File

@@ -1,23 +0,0 @@
" We take care to preserve the user's fileencodings and fileformats,
" because those settings are global (not buffer local), yet we want
" to override them for loading Go files, which are defined to be UTF-8.
let s:current_fileformats = ''
let s:current_fileencodings = ''
" define fileencodings to open as utf-8 encoding even if it's ascii.
function! s:gofiletype_pre()
let s:current_fileformats = &g:fileformats
let s:current_fileencodings = &g:fileencodings
set fileencodings=utf-8 fileformats=unix
setlocal filetype=go
endfunction
" restore fileencodings as others
function! s:gofiletype_post()
let &g:fileformats = s:current_fileformats
let &g:fileencodings = s:current_fileencodings
endfunction
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
au BufRead *.go call s:gofiletype_pre()
au BufReadPost *.go call s:gofiletype_post()

View File

@@ -1,3 +0,0 @@
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml
autocmd BufNewFile,BufRead *.sass setf sass
autocmd BufNewFile,BufRead *.scss setf scss

View File

@@ -1,3 +0,0 @@
if has("autocmd")
au BufNewFile,BufRead *.{handlebars,hb,hbs,hbt}{,.erb} set ft=html syntax=handlebars | runtime! ftplugin/handlebars.vim ftplugin/handlebars*.vim ftplugin/handlebars/*.vim
endif

View File

@@ -1,2 +0,0 @@
" Jade
autocmd BufNewFile,BufReadPost *.jade set filetype=jade

View File

@@ -1,11 +0,0 @@
au BufNewFile,BufRead *.js setf javascript
au BufNewFile,BufRead *.jsm setf javascript
au BufNewFile,BufRead *.json setf javascript
au BufNewFile,BufRead Jakefile setf javascript
fun! s:SelectJavascript()
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
set ft=javascript
endif
endfun
au BufNewFile,BufRead * call s:SelectJavascript()

View File

@@ -1,8 +0,0 @@
autocmd BufNewFile,BufRead *.json set filetype=json
augroup json_autocmd
autocmd!
autocmd FileType json setlocal autoindent
autocmd FileType json setlocal formatoptions=tcq2l
autocmd FileType json setlocal foldmethod=syntax
augroup END

View File

@@ -1,3 +0,0 @@
au BufNewFile,BufRead *.ejs set filetype=jst
au BufNewFile,BufRead *.jst set filetype=jst
au BufNewFile,BufRead *.hamljs set filetype=jst

View File

@@ -1 +0,0 @@
autocmd BufNewFile,BufRead *.less setf less

View File

@@ -1,6 +0,0 @@
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
\ if &ft =~# '^\%(conf\|modula2\)$' |
\ set ft=markdown |
\ else |
\ setf markdown |
\ endif

View File

@@ -1 +0,0 @@
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif

121
ftdetect/polyglot.vim Normal file
View File

@@ -0,0 +1,121 @@
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
autocmd BufNewFile,BufRead *._coffee set filetype=coffee
function! s:DetectCoffee()
if getline(1) =~ '^#!.*\<coffee\>'
set filetype=coffee
endif
endfunction
autocmd BufNewFile,BufRead * call s:DetectCoffee()
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
autocmd BufNewFile,BufRead .msg.[0-9]*
\ if getline(1) =~ '^From.*# This line is ignored.$' |
\ set ft=gitsendemail |
\ endif
autocmd BufNewFile,BufRead *.git/**
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
\ set ft=git |
\ endif
autocmd BufNewFile,BufRead,StdinReadPost *
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
\ set ft=git |
\ endif
let s:current_fileformats = ''
let s:current_fileencodings = ''
function! s:gofiletype_pre()
let s:current_fileformats = &g:fileformats
let s:current_fileencodings = &g:fileencodings
set fileencodings=utf-8 fileformats=unix
setlocal filetype=go
endfunction
function! s:gofiletype_post()
let &g:fileformats = s:current_fileformats
let &g:fileencodings = s:current_fileencodings
endfunction
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
au BufRead *.go call s:gofiletype_pre()
au BufReadPost *.go call s:gofiletype_post()
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml
autocmd BufNewFile,BufRead *.sass setf sass
autocmd BufNewFile,BufRead *.scss setf scss
if has("autocmd")
au BufNewFile,BufRead *.{handlebars,hb,hbs,hbt}{,.erb} set ft=html syntax=handlebars | runtime! ftplugin/handlebars.vim ftplugin/handlebars*.vim ftplugin/handlebars/*.vim
endif
autocmd BufNewFile,BufReadPost *.jade set filetype=jade
au BufNewFile,BufRead *.js setf javascript
au BufNewFile,BufRead *.jsm setf javascript
au BufNewFile,BufRead *.json setf javascript
au BufNewFile,BufRead Jakefile setf javascript
fun! s:SelectJavascript()
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
set ft=javascript
endif
endfun
au BufNewFile,BufRead * call s:SelectJavascript()
autocmd BufNewFile,BufRead *.json set filetype=json
augroup json_autocmd
autocmd!
autocmd FileType json setlocal autoindent
autocmd FileType json setlocal formatoptions=tcq2l
autocmd FileType json setlocal foldmethod=syntax
augroup END
au BufNewFile,BufRead *.ejs set filetype=jst
au BufNewFile,BufRead *.jst set filetype=jst
au BufNewFile,BufRead *.hamljs set filetype=jst
autocmd BufNewFile,BufRead *.less setf less
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
\ if &ft =~# '^\%(conf\|modula2\)$' |
\ set ft=markdown |
\ else |
\ setf markdown |
\ endif
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
autocmd BufNewFile,BufRead *.proto setfiletype proto
au BufRead,BufNewFile *.pp set filetype=puppet
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
au BufNewFile,BufRead .pryrc set filetype=ruby
au BufNewFile,BufRead *.ru set filetype=ruby
au BufNewFile,BufRead Capfile set filetype=ruby
au BufNewFile,BufRead Gemfile set filetype=ruby
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
au BufNewFile,BufRead Cheffile set filetype=ruby
au BufNewFile,BufRead Berksfile set filetype=ruby
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
au BufNewFile,BufRead .autotest set filetype=ruby
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
au BufNewFile,BufRead *.rabl set filetype=ruby
au BufNewFile,BufRead *.jbuilder set filetype=ruby
au BufNewFile,BufRead Puppetfile set filetype=ruby
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
au BufNewFile,BufRead Appraisals set filetype=ruby
au BufRead,BufNewFile *.sbt set filetype=sbt
fun! s:DetectScala()
if getline(1) == '#!/usr/bin/env scala'
set filetype=scala
endif
endfun
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
au BufRead,BufNewFile * call s:DetectScala()
autocmd BufNewFile,BufRead *.slim setf slim
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
au BufRead,BufNewFile *.textile set filetype=textile
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux
autocmd BufNewFile,BufRead *.twig set filetype=twig
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig

View File

@@ -1 +0,0 @@
autocmd BufNewFile,BufRead *.proto setfiletype proto

View File

@@ -1,2 +0,0 @@
" detect puppet filetype
au BufRead,BufNewFile *.pp set filetype=puppet

View File

@@ -1,62 +0,0 @@
" Ruby
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
" Ruby on Rails
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
" Rakefile
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
" Rantfile
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
" IRB config
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
" Pry config
au BufNewFile,BufRead .pryrc set filetype=ruby
" Rackup
au BufNewFile,BufRead *.ru set filetype=ruby
" Capistrano
au BufNewFile,BufRead Capfile set filetype=ruby
" Bundler
au BufNewFile,BufRead Gemfile set filetype=ruby
" Guard
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
" Chef
au BufNewFile,BufRead Cheffile set filetype=ruby
au BufNewFile,BufRead Berksfile set filetype=ruby
" Vagrant
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
" Autotest
au BufNewFile,BufRead .autotest set filetype=ruby
" eRuby
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
" Thor
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
" Rabl
au BufNewFile,BufRead *.rabl set filetype=ruby
" Jbuilder
au BufNewFile,BufRead *.jbuilder set filetype=ruby
" Puppet librarian
au BufNewFile,BufRead Puppetfile set filetype=ruby
"
" Buildr Buildfile
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
" Appraisal
au BufNewFile,BufRead Appraisals set filetype=ruby
" vim: nowrap sw=2 sts=2 ts=8 noet:

View File

@@ -1,6 +0,0 @@
" Vim detect file
" Language: sbt
" Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org>
" Last Change: 2012 Jan 19
au BufRead,BufNewFile *.sbt set filetype=sbt

View File

@@ -1,8 +0,0 @@
fun! s:DetectScala()
if getline(1) == '#!/usr/bin/env scala'
set filetype=scala
endif
endfun
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
au BufRead,BufNewFile * call s:DetectScala()

View File

@@ -1 +0,0 @@
autocmd BufNewFile,BufRead *.slim setf slim

View File

@@ -1,3 +0,0 @@
" Stylus
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus

View File

@@ -1,8 +0,0 @@
" textile.vim
"
" Tim Harper (tim.theenchanter.com)
" Force filetype to be textile even if already set
" This will override the system ftplugin/changelog
" set on some distros
au BufRead,BufNewFile *.textile set filetype=textile

View File

@@ -1 +0,0 @@
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux

View File

@@ -1,5 +0,0 @@
" Twig
autocmd BufNewFile,BufRead *.twig set filetype=twig
" HTML Twig
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig

View File

@@ -45,6 +45,8 @@ endif
setlocal comments= commentstring=//\ %s
setlocal suffixesadd=.styl
" Add '-' and '#' to the what makes up a keyword.
" This means that 'e' and 'w' work properly now, for properties
" and valid variable names.

8
spec/build_spec.rb Normal file
View File

@@ -0,0 +1,8 @@
$plugin_path = File.expand_path('../..', __FILE__)
describe 'build script' do
it 'should run and return success code' do
Dir.chdir($plugin_path)
expect(system('bash ./build')).to be_true
end
end

14
spec/loading_spec.rb Normal file
View File

@@ -0,0 +1,14 @@
require 'spec_helper'
describe "My Vim plugin" do
languages = Dir["#{$plugin_path}/syntax/*.vim"].map { |f| f.split('/').last.gsub('.vim', '') }
languages.each do |lang|
it "should parse .#{lang} file" do
write_file "test.#{lang}", ""
vim.edit "test.#{lang}"
vim.insert "sample"
vim.write
end
end
end

22
spec/spec_helper.rb Executable file
View File

@@ -0,0 +1,22 @@
require 'vimrunner'
require 'vimrunner/rspec'
$plugin_path = File.expand_path('../..', __FILE__)
Vimrunner::RSpec.configure do |config|
# Use a single Vim instance for the test suite. Set to false to use an
# instance per test (slower, but can be easier to manage).
config.reuse_server = true
# Decide how to start a Vim instance. In this block, an instance should be
# spawned and set up with anything project-specific.
config.start_vim do
vim = Vimrunner.start
# Setup your plugin in the Vim instance
vim.add_plugin($plugin_path)
# The returned value is the Client available in the tests.
vim
end
end

File diff suppressed because one or more lines are too long