Add syntax highlighting for SML (#3692)
Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
This commit is contained in:
parent
e14b48af2e
commit
5b1113766d
3 changed files with 104 additions and 0 deletions
|
@ -95,6 +95,7 @@
|
|||
| scheme | ✓ | | | |
|
||||
| scss | ✓ | | | `vscode-css-language-server` |
|
||||
| slint | ✓ | | ✓ | `slint-lsp` |
|
||||
| sml | ✓ | | | |
|
||||
| solidity | ✓ | | | `solc` |
|
||||
| sql | ✓ | | | |
|
||||
| sshclientconfig | ✓ | | | |
|
||||
|
|
|
@ -1712,3 +1712,15 @@ language-server = { command = "pasls", args = [] }
|
|||
[[grammar]]
|
||||
name = "pascal"
|
||||
source = { git = "https://github.com/Isopod/tree-sitter-pascal", rev = "2fd40f477d3e2794af152618ccfac8d92eb72a66" }
|
||||
|
||||
[[language]]
|
||||
name = "sml"
|
||||
scope = "source.sml"
|
||||
injection-regex = "sml"
|
||||
file-types = ["sml"]
|
||||
comment-token = "(*"
|
||||
roots = []
|
||||
|
||||
[[grammar]]
|
||||
name = "sml"
|
||||
source = { git = "https://github.com/Giorbo/tree-sitter-sml", rev = "bd4055d5554614520d4a0706b34dc0c317c6b608" }
|
||||
|
|
91
runtime/queries/sml/highlights.scm
Normal file
91
runtime/queries/sml/highlights.scm
Normal file
|
@ -0,0 +1,91 @@
|
|||
; Highlights queries from Matthew Fluet (https://github.com/MatthewFluet/tree-sitter-sml)
|
||||
;
|
||||
; MIT License
|
||||
;
|
||||
; Copyright (c) 2022 Matthew Fluet
|
||||
;
|
||||
; Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
; of this software and associated documentation files (the "Software"), to deal
|
||||
; in the Software without restriction, including without limitation the rights
|
||||
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
; copies of the Software, and to permit persons to whom the Software is
|
||||
; furnished to do so, subject to the following conditions:
|
||||
;
|
||||
; The above copyright notice and this permission notice shall be included in all
|
||||
; copies or substantial portions of the Software.
|
||||
;
|
||||
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
; SOFTWARE.
|
||||
|
||||
;; *******************************************************************
|
||||
;; Comments
|
||||
;; *******************************************************************
|
||||
|
||||
[(block_comment) (line_comment)] @comment
|
||||
|
||||
;; *******************************************************************
|
||||
;; Keywords
|
||||
;; *******************************************************************
|
||||
|
||||
[
|
||||
;; Reserved Words Core
|
||||
"abstype" "and" "andalso" "as" "case" "datatype" "do" "else" "end"
|
||||
"exception" "fn" "fun" "handle" "if" "in" "infix" "infixr" "let"
|
||||
"local" "nonfix" "of" "op" "open" "orelse" "raise" "rec" "then"
|
||||
"type" "val" "with" "withtype" "while"
|
||||
;; Reserved Words Modules
|
||||
"eqtype" "functor" "include" "sharing" "sig" "signature" "struct"
|
||||
"structure" "where"
|
||||
] @keyword
|
||||
|
||||
;; *******************************************************************
|
||||
;; Constants
|
||||
;; *******************************************************************
|
||||
|
||||
(integer_scon) @constant.numeric.integer
|
||||
(real_scon) @constant.numeric.float
|
||||
(word_scon) @constant.numeric
|
||||
(string_scon) @string
|
||||
(char_scon) @constant.character
|
||||
|
||||
;; *******************************************************************
|
||||
;; Types
|
||||
;; *******************************************************************
|
||||
|
||||
(fn_ty "->" @type)
|
||||
(tuple_ty "*" @type)
|
||||
(paren_ty ["(" ")"] @type)
|
||||
(tyvar_ty (tyvar) @type)
|
||||
(record_ty
|
||||
["{" "," "}"] @type
|
||||
(tyrow [(lab) ":"] @type)?
|
||||
(ellipsis_tyrow ["..." ":"] @type)?)
|
||||
(tycon_ty
|
||||
(tyseq ["(" "," ")"] @type)?
|
||||
(longtycon) @type)
|
||||
|
||||
;; *******************************************************************
|
||||
;; Constructors
|
||||
;; *******************************************************************
|
||||
|
||||
;; Assume value identifiers starting with capital letter are constructors
|
||||
((vid) @constructor
|
||||
(#match? @constructor "^[A-Z].*"))
|
||||
|
||||
((vid) @constant.builtin (#eq? @constant.builtin "nil"))
|
||||
((vid) @constant.builtin.boolean
|
||||
(#match? @constant.builtin.boolean "^(true|false)$"))
|
||||
((vid) @operator (#eq? @operator "::"))
|
||||
((vid) @keyword.storage.modifier (#eq? @keyword.storage.modifier "ref"))
|
||||
|
||||
;; *******************************************************************
|
||||
;; Punctuation
|
||||
;; *******************************************************************
|
||||
|
||||
["(" ")" "[" "]" "{" "}"] @punctuation.bracket
|
||||
["." "," ":" ";" "|" "=>" ":>"] @punctuation.delimiter
|
Loading…
Add table
Reference in a new issue