mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
simple vim syntax for psyc packets
This commit is contained in:
parent
a0abf99f72
commit
1248989279
34 changed files with 35 additions and 0 deletions
124
share/emacs/psyc.el
Normal file
124
share/emacs/psyc.el
Normal file
|
@ -0,0 +1,124 @@
|
|||
(require 'font-lock)
|
||||
|
||||
(setq
|
||||
psyc-op "\\([:!?=$@+-]\\)"
|
||||
psyc-routing-op "^\\([:=]\\)"
|
||||
psyc-state-op "^\\([?=]\\)$"
|
||||
|
||||
psyc-num "\\([0-9]+\\)"
|
||||
psyc-kw "\\([a-z_][a-z0-9_]*\\)"
|
||||
|
||||
psyc-length "^[0-9]+$"
|
||||
|
||||
psyc-routing-var-names (regexp-opt '("_amount_fragments" "_context" "_counter"
|
||||
"_fragment" "_source" "_source_relay"
|
||||
"_target" "_target_relay"
|
||||
"_tag" "_tag_relay") 'word)
|
||||
psyc-routing-var (concat psyc-routing-op psyc-routing-var-names)
|
||||
|
||||
psyc-types (concat "\\([a-z][a-z0-9]+\\|"
|
||||
(regexp-opt '("_dict" "_list" "_struct"
|
||||
"_int" "_uint" "_num" "_unum" "_flag" "_amount"
|
||||
"_date" "_time" "_uniform") nil)
|
||||
"\\)")
|
||||
|
||||
psyc-mod-op (concat "^" psyc-op)
|
||||
psyc-mod-name (concat psyc-mod-op psyc-kw) ;2
|
||||
psyc-mod-type (concat psyc-mod-op psyc-types "\\b") ;2
|
||||
psyc-mod-len (concat psyc-mod-op psyc-kw " " psyc-num) ;3
|
||||
psyc-mod-delim (concat "\\(?: " psyc-num "\\)?[\t ]+")
|
||||
psyc-mod (concat psyc-mod-op psyc-kw psyc-mod-delim) ;3
|
||||
|
||||
psyc-default-name (concat psyc-mod psyc-kw "[|{]") ;4
|
||||
psyc-default-type (concat psyc-mod psyc-types "[_|{]") ;4
|
||||
; psyc-default-name (concat "[\t ]" psyc-kw "[|{]")
|
||||
; psyc-default-type (concat "[\t ]" psyc-types "[_|{]")
|
||||
|
||||
|
||||
psyc-elem-delim "[|{}]"
|
||||
psyc-elem-start "[|}]"
|
||||
psyc-elem-op (concat psyc-elem-start "\\(=\\)")
|
||||
psyc-elem-name (concat psyc-elem-start "=" psyc-kw)
|
||||
psyc-elem-type (concat psyc-elem-start "=" psyc-types "\\b")
|
||||
psyc-elem-name-delim (concat psyc-elem-name "\\(:\\)") ;2
|
||||
psyc-elem-len (concat psyc-elem-start "\\(?:=" psyc-kw ":\\)?" psyc-num) ;2
|
||||
|
||||
psyc-update-op (concat "^@" psyc-kw psyc-mod-delim ".+ " psyc-op) ;3
|
||||
psyc-update-name (concat "^@" psyc-kw psyc-mod-delim ".+ "
|
||||
psyc-op psyc-kw) ;4
|
||||
psyc-update-type (concat "^@" psyc-kw psyc-mod-delim ".+ "
|
||||
psyc-op psyc-types "\\b") ;4
|
||||
psyc-update-len-delim (concat "^@" psyc-kw psyc-mod-delim ".+ "
|
||||
psyc-op psyc-kw "?\\(:\\)") ;5
|
||||
psyc-update-len (concat "^@" psyc-kw psyc-mod-delim ".+ "
|
||||
psyc-op psyc-kw "?:" psyc-num) ;5
|
||||
|
||||
psyc-index-delim "\\(#\\)-?[0-9]+"
|
||||
|
||||
psyc-struct-delim "[\t0-9}]\\(\\.\\)"
|
||||
psyc-struct-name (concat psyc-struct-delim psyc-kw) ;2
|
||||
psyc-struct-type (concat psyc-struct-delim psyc-types "\\b") ;2
|
||||
|
||||
|
||||
psyc-dict-key-len (concat "{" psyc-num)
|
||||
psyc-dict-key (concat "{\\(?:" psyc-num " \\)?\\([^}]+\\)") ;2
|
||||
|
||||
psyc-method (concat "^_" psyc-kw)
|
||||
;psyc-body "^[^_:!?=$@+-].*$"
|
||||
|
||||
psyc-tmpl-start (concat "\\(\\[\\)" psyc-kw ".+?\\]")
|
||||
psyc-tmpl-end (concat "\\[" psyc-kw ".+?\\(\\]\\)")
|
||||
|
||||
psyc-packet-delim "^|$"
|
||||
|
||||
psyc-font-lock-keywords
|
||||
`(
|
||||
(,psyc-routing-var . (2 font-lock-keyword-face t))
|
||||
(,psyc-length . (0 font-lock-constant-face))
|
||||
(,psyc-state-op . (0 font-lock-preprocessor-face))
|
||||
(,psyc-mod-op . (1 font-lock-preprocessor-face))
|
||||
(,psyc-mod-name . (2 font-lock-variable-name-face))
|
||||
(,psyc-mod-type . (2 font-lock-type-face t))
|
||||
(,psyc-mod-len . (3 font-lock-constant-face))
|
||||
|
||||
(,psyc-default-name . (4 font-lock-variable-name-face))
|
||||
(,psyc-default-type . (4 font-lock-type-face t))
|
||||
|
||||
(,psyc-dict-key-len . (1 font-lock-constant-face))
|
||||
(,psyc-dict-key . (2 font-lock-string-face))
|
||||
|
||||
(,psyc-elem-op . (1 font-lock-preprocessor-face))
|
||||
(,psyc-elem-name . (1 font-lock-variable-name-face))
|
||||
(,psyc-elem-type . (1 font-lock-type-face t))
|
||||
(,psyc-elem-name-delim . (2 font-lock-comment-face))
|
||||
(,psyc-elem-len . (2 font-lock-constant-face))
|
||||
(,psyc-elem-delim . (0 font-lock-keyword-face))
|
||||
|
||||
(,psyc-update-op . (3 font-lock-preprocessor-face))
|
||||
(,psyc-update-name . (4 font-lock-variable-name-face))
|
||||
(,psyc-update-type . (4 font-lock-type-face t))
|
||||
(,psyc-update-len-delim . (5 font-lock-comment-face))
|
||||
(,psyc-update-len . (5 font-lock-constant-face))
|
||||
|
||||
(,psyc-method . (0 font-lock-function-name-face))
|
||||
;(,psyc-body . (0 font-lock-comment-face))
|
||||
|
||||
(,psyc-index-delim . (1 font-lock-comment-face))
|
||||
(,psyc-struct-name . (1 font-lock-comment-face))
|
||||
(,psyc-struct-name . (2 font-lock-variable-name-face))
|
||||
(,psyc-struct-type . (2 font-lock-type-face t))
|
||||
|
||||
(,psyc-tmpl-start . (1 font-lock-keyword-face))
|
||||
(,psyc-tmpl-end . (2 font-lock-keyword-face))
|
||||
|
||||
(,psyc-packet-delim . (0 font-lock-preprocessor-face))
|
||||
))
|
||||
|
||||
(define-derived-mode psyc-mode fundamental-mode
|
||||
"PSYC"
|
||||
"Major mode for editing PSYC packets"
|
||||
|
||||
(setq font-lock-defaults '((psyc-font-lock-keywords)))
|
||||
(setq show-trailing-whitespace t))
|
||||
|
||||
(provide 'psyc)
|
1
share/vim/ftdetect/psyc.vim
Normal file
1
share/vim/ftdetect/psyc.vim
Normal file
|
@ -0,0 +1 @@
|
|||
au BufRead,BufNewFile *.psyc set filetype=psyc
|
34
share/vim/syntax/psyc.vim
Normal file
34
share/vim/syntax/psyc.vim
Normal file
|
@ -0,0 +1,34 @@
|
|||
" Vim syntax file
|
||||
" Language: PSYC - syntax highlighting for protocol packets
|
||||
" Maintainer: carlo von lynX
|
||||
" Latest Revision: 2016-08-25
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" PSYC2 syntax
|
||||
syn match psycSeparator /^|$/
|
||||
|
||||
" PSYC1 syntax
|
||||
syn match psycSeparator /^\.$/
|
||||
|
||||
" PSYC operators
|
||||
syn match psycSet /^:[a-z_].*$/
|
||||
syn match psycAssign /^=[a-z_].*$/
|
||||
syn match psycAugment /^+[a-z_].*$/
|
||||
" why doesn't this one work?
|
||||
syn match psycDiminsh /^\-[a-z_].*$/
|
||||
|
||||
" should define a region instead, so that header rules
|
||||
" are not applied to body
|
||||
syn match psycMethod /^[a-z_]\+$/
|
||||
|
||||
hi def link psycSeparator PreProc
|
||||
hi def link psycMethod Statement
|
||||
hi def link psycAssign Constant
|
||||
hi def link psycSet Identifier
|
||||
hi def link psycAugment Type
|
||||
hi def link psycDiminish Type
|
||||
|
||||
let b:current_syntax = "psyc"
|
Loading…
Add table
Add a link
Reference in a new issue