about summary refs log tree commit diff stats
path: root/subx
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2018-06-30 21:40:14 -0700
committerKartik Agaram <vc@akkartik.com>2018-06-30 21:57:49 -0700
commit2c6a077f2913d7f04382b8d06760552606a64ac8 (patch)
treeaefbbb946f65c2c6d3f946e0aebcf3f76a2de0de /subx
parent672e0a7e5fe7ab7b5f1e454dbc61c1617867a7a9 (diff)
downloadmu-2c6a077f2913d7f04382b8d06760552606a64ac8.tar.gz
4292 - start a Vim syntax file for our 'language'
As we add high-level constructs we'll start labeling low-level
constructs as unsafe, and highlighting them in red in our editor.
Diffstat (limited to 'subx')
-rw-r--r--subx/ex1.subx (renamed from subx/ex1.hex)4
-rw-r--r--subx/subx.vim22
2 files changed, 26 insertions, 0 deletions
diff --git a/subx/ex1.hex b/subx/ex1.subx
index 5a6317bd..f326d231 100644
--- a/subx/ex1.hex
+++ b/subx/ex1.subx
@@ -1,6 +1,10 @@
+## first program: same as https://www.muppetlabs.com/~breadbox/software/tiny/teensy.html
+
 # opcode        ModR/M                    SIB                   displacement    immediate
 # instruction   mod, reg, Reg/Mem bits    scale, index, base
 # 1-3 bytes     0/1 byte                  0/1 byte              0/1/2/4 bytes   0/1/2/4 bytes
   bb                                                                            2a 00 00 00  # copy 0x2a (42) to EBX
   05                                                                            01 00 00 00  # copy 1 to EAX
   cd                                                                            80           # int 80h
+
+# vim:ft=subx
diff --git a/subx/subx.vim b/subx/subx.vim
new file mode 100644
index 00000000..342db05e
--- /dev/null
+++ b/subx/subx.vim
@@ -0,0 +1,22 @@
+" SubX syntax file
+" Language:    SubX
+" Maintainer:  Kartik Agaram <mu@akkartik.com>
+" URL:         http://github.com/akkartik/mu
+" License:     public domain
+"
+" Copy this into your ftplugin directory, and add the following to your vimrc
+" or to .vim/ftdetect/subx.vim:
+"   autocmd BufReadPost,BufNewFile *.subx set filetype=subx
+
+let s:save_cpo = &cpo
+set cpo&vim
+
+" setlocal iskeyword=@,48-57,?,!,_,$,-
+setlocal formatoptions-=t  " allow long lines
+setlocal formatoptions+=c  " but comments should still wrap
+
+syntax match subxComment /# .*$/  | highlight link subxComment Comment
+syntax match subxSalientComment /##.*$/  | highlight link subxSalientComment SalientComment
+set comments+=n:#
+syntax match subxCommentedCode "#? .*"  | highlight link subxCommentedCode CommentedCode
+let b:cmt_head = "#? "