Skip to content

Commit

Permalink
[ new ] Add support for Idris 2 programming language
Browse files Browse the repository at this point in the history
  • Loading branch information
buzden committed Jan 14, 2025
1 parent dd3d1b8 commit 537dbe9
Show file tree
Hide file tree
Showing 6 changed files with 226 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -263,3 +263,6 @@
[submodule "assets/syntaxes/02_Extra/CFML"]
path = assets/syntaxes/02_Extra/CFML
url = https://github.com/jcberquist/sublimetext-cfml.git
[submodule "assets/syntaxes/02_Extra/Idris2"]
path = assets/syntaxes/02_Extra/Idris2
url = https://github.com/buzden/sublime-syntax-idris2
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
- Adds support for pipe delimiter for CSV #3115 (@pratik-m)
- Add syntax mapping for `/etc/pacman.conf` #2961 (@cyqsimon)
- Associate `uv.lock` with `TOML` syntax, see #3132 (@fepegar)
- Add support for [Idris 2 programming language](https://www.idris-lang.org/) #3150 (@buzden)

## Themes

Expand Down
1 change: 1 addition & 0 deletions assets/syntaxes/02_Extra/Idris2
Submodule Idris2 added at 7c1bf4
107 changes: 107 additions & 0 deletions tests/syntax-tests/highlighted/Idris2/test.idr
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
-- some code in Idris
module XX.X'''

import Data.Nat

data X = A | B

namespace X
 ||| Documentation
 record Y where
 [noHints]
 constructor MkY'
 field1 : Nat
 {auto x : Nat}

namespace X' {
 parameters (x : A (Maybe b))
 x : Nat
}

u : ()
u = ()

k, w, u : Char
k = '\NUL'
w = 'w'

x = [1, 0, 3, "sdf\{d}", 0xFF, 0o77, 0b10_1, 100_100]

f : Int -> Int
f = if x > 0 then x else 0 () SS `elem` S $ do
 x <- a [1, 2, 3]
 let ukuk = akak
 rewrite $ Wow Wow Wow Wow.Wow b W (W)
 pure $ f A B c D (EE) E

(&&&) : Nat -> Nat -> Nat
z &&& y = d + ?foo
(&&&) x y = ?asfda

public export covering
(.fun) : X a Y b => Nat -> Nat
Z .fun = haha.fun haha .N
(.fun) Z = ahah $ \case
 x@(x, y) => Prelude.Types.ahahah

(.N) : Nat -> Nat
Z .N = Z
(.N) (S n) = (.N) n

xx : Name
xx = `{Full.Name}

infixr 0 ^^^, &&&

xxx : ?
xxx = case x of
 Z => lalalaCamelCase
 z => alalalCamelCase

ff : Nat -> TTImp
ff 0 = let x = 0 in val
ff _ = `(let x = 0 in ~val ^~^ ~(abc))
ff _ = f `(let x = 0 in ~val ^~^ ~(abc)) x

%language ElabReflection
%runElab X.sf ads

%macro %inline
fff : List Decl
fff = `[
 f : Nat -> Nat

 f Z = haha %runElab %search @{%World}
]

private infixr 4 ^--^

(^--^) : Nat -> Nat -> Nat
(^--^) Z Z = Z
x ^--^ y = x + y

x : (y : Vect n (Maybe (Maybe (&&&) Nat))) ->
 {x : Nat} -> {auto _ : Monoid a} ->
 {default 4 xx : Nat} ->
 {default (f x Y) xx' : Nat} ->
 String
x Z S = ?foo
x y _ = "a b \{show $ let x = 0 in y} y >>= z"

multiline : String
multiline = """
 A multiline string\NUL
 """

f' : Nat -> Nat
f' = x' 4

x : Char
x = '\BEL'
x = '\\'
x = '\''
x = '\o755'
x = 'a'

xx : Int
xx = 0o7_5_5
7 changes: 7 additions & 0 deletions tests/syntax-tests/source/Idris2/LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
The `test.idr` file has been added from https://github.com/buzden/sublime-syntax-idris2 under the following license:

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0
Loading

0 comments on commit 537dbe9

Please sign in to comment.