proteome-0.9.9.9: lib/Proteome/Files/Syntax.hs
module Proteome.Files.Syntax where
import qualified Data.Map.Strict as Map (fromList)
import Ribosome.Data.SyntaxItem (SyntaxItem (options, params))
import Ribosome.Syntax (HiLink (HiLink), Syntax (Syntax), syntaxMatch, syntaxVerbatim)
import Text.RawString.QQ (r)
asterisk :: SyntaxItem
asterisk =
item {options, params}
where
item = syntaxMatch "ProFilesAsterisk" [r|^ \*|]
options = ["skipwhite"]
params = Map.fromList [("nextgroup", "ProFilesBase,ProFilesName")]
base :: SyntaxItem
base =
item {options, params}
where
item = syntaxMatch "ProFilesBase" [r|\[[^]]\+\]|]
options = ["skipwhite", "contained"]
params = Map.fromList [("nextgroup", "ProFilesName")]
name :: SyntaxItem
name =
item {options}
where
item = syntaxMatch "ProFilesName" ".*"
options = ["contained"]
sync :: SyntaxItem
sync =
syntaxVerbatim "syntax sync minlines=1"
hlAsterisk :: HiLink
hlAsterisk =
HiLink "ProFilesAsterisk" "Todo"
hlBase :: HiLink
hlBase =
HiLink "ProFilesBase" "Directory"
hlName :: HiLink
hlName =
HiLink "ProFilesName" "Type"
filesSyntax :: Syntax
filesSyntax =
Syntax items [] links
where
items =
[asterisk, base, name, sync]
links =
[hlAsterisk, hlBase, hlName]