Skip to content

Commit 5f57cf9

Browse files
authored
[Dana] Add syntax highlighting extension for Vim/NeoVim (#85)
Added a Dana syntax highlight extension for vim
1 parent 6187dab commit 5f57cf9

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

dana/vim_syntax/README.MD

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
A simple Dana syntax highlight extension for Vim, based on the Pascal extension.
2+
3+
## Installation
4+
5+
1. **Copy the syntax file:**
6+
- Copy `syntax/dana.vim` to `~/.vim/syntax/` or `~/.config/nvim/syntax/`.
7+
8+
2. **Enable auto highlighting for `.dana` files:** [optional]
9+
- Copy `ftdetect/dana.vim` to `~/.vim/ftdetect/` or `~/.config/nvim/ftdetect/`.

dana/vim_syntax/ftdetect/dana.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
au BufNewFile,BufRead *.dana set filetype=dana

dana/vim_syntax/syntax/dana.vim

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
"=============================================================================
2+
" File: dana.vim
3+
" Description: Vim syntax file for Dana Language
4+
"=============================================================================
5+
6+
if exists("b:current_syntax")
7+
finish
8+
endif
9+
10+
11+
syn case ignore
12+
syn sync lines=250
13+
14+
" Keywords
15+
syn keyword danaBoolean true false
16+
syn keyword danaConditional if elif else
17+
syn keyword danaOperator and not or
18+
syn keyword danaLoop loop
19+
syn keyword danaStatement begin end skip exit return break continue
20+
syn keyword danaType int byte ref
21+
syn keyword danaDefinition def decl var
22+
23+
" Operators
24+
syn match danaSymbolOperator /+\|=\|\|<>\|*\|<\|\/\|>\|%\|<=\|!\|>=\|&\|||/
25+
syn match danaSymbolOperator ":="
26+
syn keyword danaOperator as is
27+
28+
" Delimiters
29+
syn match danaDelimiter /[()\[\],]\|:\ze[^=]/
30+
31+
" Match any identifier except for statement keywords
32+
syn match danaIdentifier "\<[a-zA-Z][a-zA-Z0-9_]*\>"
33+
34+
35+
" Built-in library functions
36+
syn keyword danaFunction writeInteger writeByte writeChar writeString readInteger readByte readChar readString extend shrink strlen strcmp strcpy strcat
37+
38+
" Numbers
39+
syn match danaNumber /\<\d\+\>/
40+
41+
" Character literal: '\([^'"\\]\|\\\(n\|t\|r\|0\|\\\|'\|"\|x[0-9a-fA-F][0-9a-fA-F]\)\)'
42+
syn match danaChar /'\([^'"\\]\|\\\(n\|t\|r\|0\|\\\|'\|"\|x[0-9a-fA-F][0-9a-fA-F]\)\)'/
43+
44+
" String literal: "([^'"\n\\]\|ESC)*"
45+
syn match danaString /"\([^'"\n\\]\|\\\(n\|t\|r\|0\|\\\|'\|"\|x[0-9a-fA-F][0-9a-fA-F]\)\)*"/
46+
47+
" Comments
48+
syn match danaComment /#.*$/
49+
syn region danaComment start="(\*" end="\*)"
50+
51+
hi def link danaBoolean Boolean
52+
hi def link danaChar Character
53+
hi def link danaComment Comment
54+
hi def link danaConditional Conditional
55+
hi def link danaDefinition Statement
56+
hi def link danaDelimiter Delimiter
57+
hi def link danaFuncCall Function
58+
hi def link danaFunction Function
59+
hi def link danaNumber Number
60+
hi def link danaOperator Operator
61+
hi def link danaLoop Repeat
62+
hi def link danaStatement Statement
63+
hi def link danaString String
64+
hi def link danaSymbolOperator danaOperator
65+
hi def link danaType Type
66+
67+
let b:current_syntax = "dana"

0 commit comments

Comments
 (0)