Skip to content
This repository has been archived by the owner on May 6, 2021. It is now read-only.

Commit

Permalink
Add option to format on save
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelmota committed Jan 12, 2021
1 parent d3acb56 commit d3cf09c
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 14 deletions.
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
# cairo.vim

> [Cairo lang](https://www.cairo-lang.org/) plugin for Vim.
> A [Cairo lang](https://www.cairo-lang.org/) plugin for Vim
## Install with Plug

```vim
Plug 'miguelmota/cairo.vim'
```

## Options

Auto-format on save:

```vim
let g:cairo_linter_autosave = 1
```

## License

[MIT](LICENSE)
7 changes: 6 additions & 1 deletion ftdetect/cairo.vim
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
autocmd BufNewFile,BufRead *.cairo setfiletype cairo
" augroup prevents duplicated autocmds when sourcing
augroup cairo
autocmd!
autocmd BufNewFile,BufRead *.cairo setfiletype cairo
autocmd BufWritePost * :call CairoSave()
augroup END
5 changes: 5 additions & 0 deletions ftplugin/cairo.vim
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
" number of space characters for tab
setlocal tabstop=4

" tab indent size in spaces
setlocal shiftwidth=4
6 changes: 6 additions & 0 deletions plugin/cairo.vim
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
function! CairoSave()
if exists("g:cairo_linter_autosave") && g:cairo_linter_autosave > 0
:call CairoFormat()
endif
endfunction

function! CairoFormat()
silent !clear
silent execute "!cairo-format -i " . bufname('%') | execute ':redraw!'
Expand Down
30 changes: 18 additions & 12 deletions syntax/cairo.vim
Original file line number Diff line number Diff line change
Expand Up @@ -8,31 +8,37 @@ if exists("b:current_syntax")
finish
endif

syntax include @python syntax/python.vim

syn match clCommentLine /#[^\n]*\n/
syn keyword clKeywordControlElse else
syn keyword clKeywordOpcode call jmp ret abs rel if
syn keyword clKeywordRegister ap fp
syn keyword clKeywordMeta const let local tempvar felt as from import static_assert return assert member cast alloc_locals
syn keyword clItalic SIZEOF_LOCALS SIZE
syn keyword clKeywordSpecial SIZEOF_LOCALS SIZE
syn match clEntityFuncName /\v[a-zA-Z_][a-zA-Z0-9_]*:/ skipwhite

syn match clEntityCondition '\s\+.*\ze\s*:' contained
syn keyword clKeywordControlIf if nextgroup=clEntityCondition
syn keyword clKeywordControlEnd end
"syn keyword clKeywordControlIf if nextgroup=clEntityCondition
"syn keyword clKeywordControlEnd end

syn match clFuncName /\zs[a-zA-Z_][a-zA-Z0-9_]*\ze\s*(/ contained
syn keyword clKeywordFunc func nextgroup=clFuncName skipwhite

syn match clNumber '[+-]\?\d\+'

hi link clCommentLine Comment
hi clKeywordControlElse ctermfg=5
hi clKeywordOpcode ctermfg=6
hi link clKeywordControlElse Special
hi link clKeywordOpcode Keyword
hi link clKeywordRegister Identifier
hi link clKeywordMeta Keyword
hi link clKeywordItalic Keyword
hi clEntityFuncName ctermfg=3
hi clKeywordControlIf ctermfg=5
hi clEntityCondition ctermfg=3
hi clKeywordControlEnd ctermfg=5
hi clKeywordFunc ctermfg=5
hi clFuncName ctermfg=3
hi link clKeywordSpecial Special
hi link clEntityFuncName Function
"hi link clKeywordControlIf Special
hi link clEntityCondition Statement
"hi link clKeywordControlEnd Special
hi link clKeywordFunc Function
hi link clFuncName Function
hi link clNumber Constant

let b:current_syntax = 'cairo'

0 comments on commit d3cf09c

Please sign in to comment.