commit e00015cf8d5188767f1e8bb292970138710c3f0f Author: Buddy Sandidge Date: Wed Feb 19 22:00:48 2014 -0800 Squashed 'vim/bundle/less/' content from commit 5d965c221 git-subtree-dir: vim/bundle/less git-subtree-split: 5d965c221b90fb168bf9f447a332c9ff6f62e666 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.swp diff --git a/README.md b/README.md new file mode 100644 index 0000000..e9d9b5f --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# VIM-LESS + +This vim bundle adds syntax highlighting, indenting and autocompletion for the dynamic stylesheet language [LESS](http://lesscss.org). + +This bundle is compatible with [vim-css-color](https://github.com/skammer/vim-css-color), +[vim-css3-syntax](https://github.com/hail2u/vim-css3-syntax) and possibly other plugins that place code +in `after/syntax/css.vim` or `after/syntax/css/*.vim`. + +![vim-less with vim-css-color and vim-css3-syntax (colorscheme solarized)](https://github.com/lenniboy/vim-less/raw/master/screenshot.png) + + +## Installing and Using + +- Install [pathogen](http://www.vim.org/scripts/script.php?script_id=2332) into `~/.vim/autoload/` and add the + following line to your `~/.vimrc`: + + call pathogen#infect() + +- Make a clone of the `vim-less` repository: + + $ mkdir -p ~/.vim/bundle + $ cd ~/.vim/bundle + $ git clone https://github.com/groenewege/vim-less + +- OR use [vundle](https://github.com/gmarik/vundle), adding this line to your `~/.vimrc`: + + Bundle 'groenewege/vim-less' + +- OR use git submodules: + + $ git submodule add https://github.com/groenewege/vim-less.git bundle/vim-less + $ git submodule init + + +### Map +.less to .css , lessc is required. + + nnoremap m :w !lessc % > %:t:r.css + + +## Credits + +Inspiration from [vim-haml](https://github.com/tpope/vim-haml), +[scss-syntax.vim](https://github.com/cakebaker/scss-syntax.vim) and +[vim-less](https://github.com/lunaru/vim-less) + +## License ## + +MIT : [groenewege.mit-license.org](http://groenewege.mit-license.org/) diff --git a/ftdetect/less.vim b/ftdetect/less.vim new file mode 100644 index 0000000..f1cb1d7 --- /dev/null +++ b/ftdetect/less.vim @@ -0,0 +1 @@ +autocmd BufNewFile,BufRead *.less setf less diff --git a/ftplugin/less.vim b/ftplugin/less.vim new file mode 100644 index 0000000..b6eaf6a --- /dev/null +++ b/ftplugin/less.vim @@ -0,0 +1,25 @@ +" Vim filetype plugin +" Language: LessCSS +" Author: Tim Pope +" Maintainer: Leonard Ehrenfried +" Last Change: 2011 Sep 30 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl cms< def< inc< inex< ofu< sua<" + +setlocal iskeyword+=- +setlocal commentstring=//\ %s +setlocal define=^\\s*\\%(@mixin\\\|=\\) +setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','') +setlocal omnifunc=csscomplete#CompleteCSS +setlocal suffixesadd=.less +setlocal comments=s1:/*,mb:*,ex:*/ + +let &l:include = '^\s*@import\s\+\%(url(\)\=["'']\=' + +" vim:set sw=2: diff --git a/indent/less.vim b/indent/less.vim new file mode 100644 index 0000000..556c2d0 --- /dev/null +++ b/indent/less.vim @@ -0,0 +1,10 @@ +" Vim indent file +" Language: LessCSS +" Maintainer: Leonard Ehrenfried +" Last Change: 2011 Sep 26 + +if exists("b:did_indent") + finish +endif + +runtime! indent/css.vim \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..ce25624 Binary files /dev/null and b/screenshot.png differ diff --git a/syntax/less.vim b/syntax/less.vim new file mode 100644 index 0000000..44bf470 --- /dev/null +++ b/syntax/less.vim @@ -0,0 +1,64 @@ +if exists("b:current_syntax") + finish +endif + +runtime! syntax/css.vim +runtime! after/syntax/css.vim +" load files from vim-css3-syntax plugin (https://github.com/hail2u/vim-css3-syntax) +runtime! after/syntax/css/*.vim + +syn case ignore + +syn region lessDefinition transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssTagName,cssPseudoClass,cssUrl,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,lessDefinition,lessComment,lessClassChar,lessVariable,lessMixinChar,lessAmpersandChar,lessFunction,lessNestedSelector,@cssColors fold + +syn match lessVariable "@[[:alnum:]_-]\+" contained +syn match lessVariable "@[[:alnum:]_-]\+" nextgroup=lessVariableAssignment skipwhite +syn match lessVariableAssignment ":" contained nextgroup=lessVariableValue skipwhite +syn match lessVariableValue ".*;"me=e-1 contained contains=lessVariable,lessOperator,lessDefault,cssValue.*,@cssColors "me=e-1 means that the last char of the pattern is not highlighted + +syn match lessOperator "+" contained +syn match lessOperator "-" contained +syn match lessOperator "/" contained +syn match lessOperator "*" contained + +syn match lessNestedSelector "[^/]* {"me=e-1 contained contains=cssTagName,cssAttributeSelector,lessAmpersandChar,lessVariable,lessMixinChar,lessFunction,lessNestedProperty +syn match lessNestedProperty "[[:alnum:]]\+:"me=e-1 contained + +syn match lessDefault "!default" contained + +syn match lessMixinChar "\.[[:alnum:]_-]\@=" contained nextgroup=lessClass +syn match lessAmpersandChar "&" contained nextgroup=lessClass,cssPseudoClass +syn match lessClass "[[:alnum:]_-]\+" contained + +" functions {{{ + +" string functions +syn keyword lessFunction escape e % containedin=cssDefinition contained +" misc functions +syn keyword lessFunction unit containedin=cssDefinition contained +" math functions +syn keyword lessFunction ceil floor percentage round containedin=cssDefinition contained +" color definition +syn keyword lessFunction rgb rgba argb hsl hsla hsv hsva containedin=cssDefinition contained +" color channel information +syn keyword lessFunction hue saturation lightness red green blue alpha luma containedin=cssDefinition contained +" color operations +syn keyword lessFunction saturate desaturate lighten darken fadein fadeout fade spin mix greyscale contrast containedin=cssDefinition contained +" color blending +syn keyword lessFunction multiply screen overlay softlight hardlight difference exclusion average negation containedin=cssDefinition contained + +" }}} + +syn match lessComment "//.*$" contains=@Spell + +hi def link lessVariable Special +hi def link lessVariableValue Constant +hi def link lessDefault Special +hi def link lessComment Comment +hi def link lessFunction Function +hi def link lessMixinChar Special +hi def link lessAmpersandChar Special +hi def link lessNestedProperty Type +hi def link lessClass PreProc + +let b:current_syntax = "less"