Skip to content
Browse files

Merge remote-tracking branch 'rbrown/less-lint' into less-lint

  • Loading branch information...
2 parents ac9ff10 + fbcb0b9 commit 2411135208197d0cb455b862e25292642fe87600 @scrooloose committed Sep 23, 2012
Showing with 114 additions and 1 deletion.
  1. +41 −0 syntax_checkers/less-lint.coffee
  2. +57 −0 syntax_checkers/less-lint.js
  3. +16 −1 syntax_checkers/less.vim
View
41 syntax_checkers/less-lint.coffee
@@ -0,0 +1,41 @@
+#!/usr/bin/env node
+
+fs = require 'fs'
+less = require 'less'
+args = process.argv.slice(1)
+options = {}
+
+args = args.filter (arg) ->
+ match = arg.match(/^-I(.+)$/)
+ if match
+ options.paths.push(match[1]);
+ return false
+
+ match = arg.match(/^--?([a-z][\-0-9a-z]*)(?:=([^\s]+))?$/i)
+ if match
+ arg = match[1]
+ else
+ return arg
+
+ switch arg
+ when 'strict-imports' then options.strictImports = true
+ when 'include-path'
+ options.paths = match[2].split(if os.type().match(/Windows/) then ';' else ':')
+ .map (p) ->
+ if p
+ return path.resolve(process.cwd(), p)
+ when 'O0' then options.optimization = 0
+ when 'O1' then options.optimization = 1
+ when 'O2' then options.optimization = 2
+
+options.filename = args[1]
+
+parser = new(less.Parser) options
+
+fs.readFile(options.filename, 'utf-8', (err,data) ->
+ parser.parse(data, (err, tree) ->
+ if err
+ less.writeError err
+ process.exit(1)
+ )
+)
View
57 syntax_checkers/less-lint.js
@@ -0,0 +1,57 @@
+// Generated by CoffeeScript 1.3.3
+(function() {
+ var args, fs, less, options, parser;
+
+ fs = require('fs');
+
+ less = require('less');
+
+ args = process.argv.slice(1);
+
+ options = {};
+
+ args = args.filter(function(arg) {
+ var match;
+ match = arg.match(/^-I(.+)$/);
+ if (match) {
+ options.paths.push(match[1]);
+ return false;
+ }
+ match = arg.match(/^--?([a-z][\-0-9a-z]*)(?:=([^\s]+))?$/i);
+ if (match) {
+ arg = match[1];
+ } else {
+ return arg;
+ }
+ switch (arg) {
+ case 'strict-imports':
+ return options.strictImports = true;
+ case 'include-path':
+ return options.paths = match[2].split(os.type().match(/Windows/) ? ';' : ':').map(function(p) {
+ if (p) {
+ return path.resolve(process.cwd(), p);
+ }
+ });
+ case 'O0':
+ return options.optimization = 0;
+ case 'O1':
+ return options.optimization = 1;
+ case 'O2':
+ return options.optimization = 2;
+ }
+ });
+
+ options.filename = args[1];
+
+ parser = new less.Parser(options);
+
+ fs.readFile(options.filename, 'utf-8', function(err, data) {
+ return parser.parse(data, function(err, tree) {
+ if (err) {
+ less.writeError(err);
+ return process.exit(1);
+ }
+ });
+ });
+
+}).call(this);
View
17 syntax_checkers/less.vim
@@ -9,6 +9,14 @@
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
"============================================================================
+
+" To send additional options to less use the variable g:syntastic_less_options.
+" The default is
+" let g:syntastic_less_options = "--no-color"
+"
+" To use less-lint instead of less set the variable
+" g:syntastic_less_use_less_lint.
+
if exists("loaded_less_syntax_checker")
finish
endif
@@ -23,8 +31,15 @@ if !exists("g:syntastic_less_options")
let g:syntastic_less_options = "--no-color"
endif
+if !exists("g:syntastic_less_use_less_lint") || g:syntastic_less_use_less_lint == 0
+ let s:check_file = 'lessc'
+else
+ let s:check_file = 'node ' . expand('<sfile>:p:h') . '/less-lint.js'
+end
+
function! SyntaxCheckers_less_GetLocList()
- let makeprg = 'lessc '. g:syntastic_less_options .' '. shellescape(expand('%')) . ' /dev/null'
+ let makeprg = s:check_file . ' ' . g:syntastic_less_options . ' ' .
+ \ shellescape(expand('%')) . ' /dev/null'
"lessc >= 1.2
let errorformat = '%m in %f:%l:%c'

0 comments on commit 2411135

Please sign in to comment.
Something went wrong with that request. Please try again.