256 Commits

Author SHA1 Message Date
322a675f1b A kept when or else-less chain gives an Option, get is a checked lookup, and .fln has if let and elif let. 2026-09-26 13:52:44 +07:00
717f07f985 test-flan.el clears the arguments it reads, so a batch Emacs no longer stops to ask whether to visit the compiler binary once it passes 10 MB. 2026-09-26 13:45:17 +07:00
b545584de8 Master is merged into the when, get and if let lane, and dyn get over text counts characters through at's own body. 2026-09-26 13:17:57 +07:00
c24b19e7b1 Merge master into the dyn char lane 2026-09-26 13:09:28 +07:00
1b588df6b5 Master is merged into the when, get and if let lane after the review fixes. 2026-09-26 13:09:24 +07:00
764c2d10af String is owned, growable, always-valid UTF-8 text, and the prelude's text builders return it. 2026-09-26 13:05:56 +07:00
f35a2b240a Merge master into the dyn char lane 2026-09-26 12:51:41 +07:00
f7781dbb78 Emacs offers no binding column after a binding's else block, and offers one after a first binding whose bracketed lambda has closed 2026-09-26 12:15:04 +07:00
62fd7b19bc Master is merged into the when, get and if let lane. 2026-09-26 12:13:55 +07:00
5ee433a38f A kept when answers an Option, get is a checked lookup over arrays, slices, Vecs and dyn, and if let reads as a two-arm match in both syntaxes. 2026-09-26 12:12:48 +07:00
349e2d7e72 Merge master 2026-09-26 12:09:56 +07:00
5cc661d6ab Merge branch 'master' into worktree-agent-a26dff0627201f77b 2026-09-26 12:07:11 +07:00
db67ab19b4 String is owned, growable, always-valid UTF-8 text over a (Vec u8), and the prelude's text builders return it. 2026-09-26 12:07:11 +07:00
1d09f2fd3d Merge master into the dyn char lane 2026-09-26 11:11:42 +07:00
71f2b0b9b6 Dyn has a char that prints as its literal, dyn text counts characters, and chars and text convert between a text and a vec of chars. 2026-09-26 11:11:42 +07:00
17ff7cb348 A binding ends its let's bindings only when its value ends in an open block, the message names the let's own line, and Emacs offers no binding column after such a value 2026-09-26 11:11:32 +07:00
3d5caf25ae Merge master 2026-09-26 11:06:05 +07:00
c4452fc500 Merge master into the bit operators lane 2026-09-26 11:04:32 +07:00
473bf0a2b7 The bit operators are && || ^^ ~~ in .fln at Python's precedence, take integers only on typed and dyn values, and popcount, leading-zeros, trailing-zeros and the rotations exist on both backends. 2026-09-26 10:49:54 +07:00
63dc853121 A binding whose value is a block ends its let's bindings, a tab between let and its name is refused, and only a binding-shaped line under a let gets the alignment advice 2026-09-26 10:39:05 +07:00
fc463cf320 The .fln reader refuses loop and recur, flan convert refuses a .flan file that uses them, and every loop outside recur.flan is a while or until. 2026-09-26 10:31:53 +07:00
0e9d647aca A let's binding lines must line up with its first name, may name an operator word in parentheses, are refused clearly after a block value, and at the top level may be a typed name alone 2026-09-26 09:56:54 +07:00
25e7db944f In a .fln buffer a let's binding lines belong to its statement, TAB offers the column under its first name, and C-c C-e sends the group 2026-09-26 06:32:09 +07:00
04b29f283d In a .fln buffer a closer-led line inside open brackets goes to the bracket's continuation column, save the closer of a lambda's block 2026-09-26 06:20:55 +07:00
b1404727b6 A lambda with a block prints wherever it is last in its brackets, an element after a block lambda is refused as not last, and TAB offers no column of a block whose brackets have closed 2026-09-26 06:09:47 +07:00
895828992e Merge branch 'master' into worktree-agent-ae8e466a60e7cf35a 2026-09-26 05:44:39 +07:00
702ebdc9c5 In a .fln file a top-level let is a global and def is refused, while a let in a block or an evaluated expression stays local. 2026-09-26 05:39:59 +07:00
cde4f2ab1b A .fln file writes classes and methods as class, generic, multi and method headers, and flan convert prints them so. 2026-09-26 05:39:59 +07:00
905a4c53be A struct or union fits on one line, struct Pt(x: i32, y: i32), and flan convert writes that form when it fits. 2026-09-26 05:39:59 +07:00
de0c8791f3 A variable named like a header or clause word, data = 3 or on += 1, is read and printed as an assignment. 2026-09-26 05:39:59 +07:00
3f4e5a930f A defining form written as the fallback call in a .fln buffer draws its head as a keyword and its name as a definition, and imenu lists it. 2026-09-26 05:39:59 +07:00
72c73117d6 A .fln file writes a type alias as type Row = Vec(i32), and flan check prints nothing for a file that checks unless given --defs. 2026-09-26 05:39:59 +07:00
1a97dfff77 A .fln file writes a condition's parent as struct DiskFull :parent IoError, a macro as macro repeat(i, n, & body) and a loop as loop x = a, y = b, and flan convert prints them so. 2026-09-26 05:39:59 +07:00
34ef99d1f2 A block lambda in code cut mid-line reads against its line's start, an arm or else value ending in => takes its block, and a missing comma between indices shows the indexed spelling 2026-09-26 05:37:22 +07:00
6e56fce7fa flan-fln-mode reads a lambda's block inside brackets as statements, and the spec and manual write lambdas with => 2026-09-26 05:27:28 +07:00
267db2cd91 The typed read-only text type is spelled str, and string is refused with that fix. 2026-09-26 05:22:24 +07:00
ba3ad6b1bc In a .fln buffer ik takes the value on a one-line else or elif line, a wrapped fn header's return type is coloured, and C-u C-c C-c on a let the let above merges in stops at its value 2026-09-26 01:05:00 +07:00
02fcb1725e The .fln mode knows else under a one-line if, one-line else, flat lets whose value goes on under them, typed lambda headers, restart reports and Dir.north arms, in its bounds, TAB, pause targets and colours 2026-09-26 00:52:55 +07:00
2135f6d37f Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 23:27:55 +07:00
93e614e239 A frame that prints shows its globals, live prelude shadowing matches a rebuild, flan run cleans up and dies with flan, and a long socket path works from Emacs 2026-09-25 22:59:50 +07:00
69ac194ba7 An editor socket path too long to connect to is linked at a short path the Emacs client computes the same way 2026-09-25 22:54:44 +07:00
319a3c78c4 Merge branch 'master' into worktree-agent-a46233a32d1912c78 2026-09-25 22:40:48 +07:00
a14e633a21 A pointer's element type can be cast and a slice made from a pointer and a count with slice-from 2026-09-25 22:35:34 +07:00
70b9040512 type-of answers a dyn value's kind as a keyword, and a class cannot be named after a built-in kind 2026-09-25 22:29:26 +07:00
35aa5a8c0f A refused dyn view of a global names its own defining form as the fix, and every dyn fix is spelled in the syntax the code was written in 2026-09-25 22:27:36 +07:00
4b1e722854 slice-from makes a slice from a pointer and any integer count, and ((Ptr U) p) casts a pointer's element type without dropping const 2026-09-25 22:24:11 +07:00
e80411d283 type-of answers a value's kind as a keyword or an instance's class name, and a class named like a kind is refused. 2026-09-25 22:18:36 +07:00
47cc213b42 Return types read off the body and the converter's latest fixtures live together 2026-09-25 22:14:32 +07:00
a1e5e39dba Master's changes are merged into the dyn printing lane, with its converter fixture 2026-09-25 22:11:04 +07:00
4f060bb648 Dyn and typed containers print as [1 2 3] and {:a 1}, a refused dyn view names the value and a dyn fix in the file's own syntax, and a dyn function whose body gives no value says so by name 2026-09-25 22:01:40 +07:00