aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/haskell/injections.scm
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/haskell/injections.scm')
-rw-r--r--runtime/queries/haskell/injections.scm84
1 files changed, 84 insertions, 0 deletions
diff --git a/runtime/queries/haskell/injections.scm b/runtime/queries/haskell/injections.scm
new file mode 100644
index 000000000..a82addbce
--- /dev/null
+++ b/runtime/queries/haskell/injections.scm
@@ -0,0 +1,84 @@
+; -----------------------------------------------------------------------------
+; General language injection
+(quasiquote
+ (quoter) @injection.language
+ (quasiquote_body) @injection.content)
+
+((comment) @injection.content
+ (#set! injection.language "comment"))
+
+; -----------------------------------------------------------------------------
+; shakespeare library
+; NOTE: doesn't support templating
+; TODO: add once CoffeeScript parser is added
+; ; CoffeeScript: Text.Coffee
+; (quasiquote
+; (quoter) @_name
+; (#eq? @_name "coffee")
+; ((quasiquote_body) @injection.content
+; (#set! injection.language "coffeescript")))
+; CSS: Text.Cassius, Text.Lucius
+(quasiquote
+ (quoter) @_name
+ (#any-of? @_name "cassius" "lucius")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "css"))
+
+; HTML: Text.Hamlet
+(quasiquote
+ (quoter) @_name
+ (#any-of? @_name "shamlet" "xshamlet" "hamlet" "xhamlet" "ihamlet")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "html"))
+
+; JS: Text.Julius
+(quasiquote
+ (quoter) @_name
+ (#any-of? @_name "js" "julius")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "javascript"))
+
+; TS: Text.TypeScript
+(quasiquote
+ (quoter) @_name
+ (#any-of? @_name "tsc" "tscJSX")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "typescript"))
+
+; -----------------------------------------------------------------------------
+; HSX
+(quasiquote
+ (quoter) @_name
+ (#eq? @_name "hsx")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "html"))
+
+; -----------------------------------------------------------------------------
+; Inline JSON from aeson
+(quasiquote
+ (quoter) @_name
+ (#eq? @_name "aesonQQ")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "json"))
+
+; -----------------------------------------------------------------------------
+; SQL
+; postgresql-simple
+(quasiquote
+ (quoter) @injection.language
+ (#eq? @injection.language "sql")
+ (quasiquote_body) @injection.content)
+
+(quasiquote
+ (quoter) @_name
+ (#any-of? @_name "persistUpperCase" "persistLowerCase" "persistWith")
+ (quasiquote_body) @injection.content
+ (#set! injection.language "haskell_persistent"))
+
+; -----------------------------------------------------------------------------
+; Python
+; inline-python
+(quasiquote
+ (quoter) @injection.language
+ (#any-of? @injection.language "pymain" "pye" "py_" "pyf")
+ (quasiquote_body) @injection.content)