apogee_ntv Yeah shouldnt be too hard to wrap treesitter? 00:36
Or parse those... whats the files the JS hilite uses? 00:37
highlight.js config files
Should be easy with a grammar
or is it prism.js?
I dont know, I dont write a lot of JS 00:38
SmokeMachine In theory AST and deparse should be able to highlight, I suppose…
apogee_ntv github.com/tree-sitter/tree-sitter.../highlight Should be able to write thin FFI wrapper around this 00:39
then nativecall to it
github.com/tree-sitter/tree-sitter...ighlight.h There's already ffi 00:40
SmokeMachine m: use experimental :rakuast; say ā€œsay 11 + 31ā€.AST.DEPARSE: class Bla is RakuAST::Deparse { method hsyn($type, $content) { ā€œ({ $type }: { $content })ā€ } } # apogee_ntv 01:03
evalable6 (core-say: say) (literal: 11) (infix-+: +) (lit…
SmokeMachine, Full output: gist.github.com/614e6c43bd69a0e041...41ed2e0840
01:13 hulk joined 01:14 kylese left 01:29 sibl joined, sibl left, sibl joined
SmokeMachine spoon a multi line input, is there a way to get the cursor position and/or emit events when that position changes? 02:00
02:15 hulk left, kylese joined 02:58 apogee_ntv left 03:00 apogee_ntv joined 03:58 mtj left 04:01 mtj joined 04:27 sibl left 04:47 thatonelutenist left 04:51 thatonelutenist joined 04:55 thatonelutenist left 05:09 Aedil left 05:11 thatonelutenist joined 05:17 sibl joined 05:19 Aedil joined 05:31 annamalai left 05:52 annamalai joined 06:08 annamalai left, annamalai joined 06:52 dakkar joined
disbot2 <librasteve> that gif is wild - amazing how it already looks so good! 07:12
07:31 soverysour joined 07:35 Sgeo left 07:41 soverysour left 07:43 soverysour joined, soverysour left, soverysour joined 07:50 soverysour left 08:21 soverysour joined, soverysour left, soverysour joined 08:28 soverysour left 08:52 soverysour joined 08:56 soverysour left 09:11 sibl left
SmokeMachine :) 09:35
disbot2 <librasteve> fwiw i use Rainbow for syntax hiliting … not quite RakuAST 09:48
10:07 justache left, justache joined 10:22 xkr47 left
SmokeMachine I don’t know how I would add colors to a MultiLineInput, neither how to do that while writing… apogee_ntv, any suggestion? 10:40
apogee_ntv SmokeMachine: It's not currently rich IIRC. I think we would want a proper editor widget. 10:50
Since multiline doesnt support things like normal up/down navigation on multiline text, it would make a poor editor for large source files.
SmokeMachine apogee_ntv: Sorry, what do you mean by up/down? It seems to work... usercontent.irccloud-cdn.com/file/....54.25.gif 10:55
Scroll also seem to work... usercontent.irccloud-cdn.com/file/....56.54.gif 10:57
apogee_ntv SmokeMachine: If the lines wrap, it will wrap to the logical line not the display line, it also wont preserve col if it goes past a blank line IIRC. It wont feel like vim/emacs I guess is what I mean :P 11:00
11:00 sibl joined
apogee_ntv I mostly designed the existing widget set for an LLM inference client so 'chat-ish' purposes, an editor widget is on my todo list though 11:01
I would like an editor written in Raku to edit Raku, good dogfooding opportunity.
SmokeMachine apogee_ntv: you mean something like this? usercontent.irccloud-cdn.com/file/....01.55.gif 11:02
apogee_ntv But right now working on some other Selkie apps 11:03
No I mean, go on one of the a's and press down
or up
It will move the cursor to the logical line above/below, not the character displayed above/below
Then go in vim and do the same 11:04
It will move to the character
on the display line below
And if you make 3 lines: 'abcdefg', 'zyx', and '1234567'. Put the cursor on 'f'. In any normal editor if you press down twice, cursor will end up on '6'. Here I believe it will end up on '1' or '3' (not 100% sure off hand). 11:05
SmokeMachine usercontent.irccloud-cdn.com/file/....04.13.gif 11:06
apogee_ntv Yeah see, it should jump to the 'a' on the 2nd line directly below the 'a' you have highlighted to 'feel right' as an editor.
Though that one is less important than 11:07
SmokeMachine on nvim... my last moves were using "gj" and "gk", that's why it came from a line of "a" to another line of "a"... usercontent.irccloud-cdn.com/file/....08.06.gif 11:10
(sorry I tried to keep the same panes/windows/... positions)
apogee_ntv Sec let me show you the bigger problem 11:11
wormhole.app/kzBPPm#Xv_UwBkvshdYoFyJlTzsQg
SmokeMachine on my example with MultiLineInput IMHO the biggest problem is when going back to the "a" line, it does not go back to the column it was before... 11:12
apogee_ntv Yeah exactly
Thats the big 'editor pane' issue
Though tbh I'd like to do one with modal editing & vim keybinds lol
At least the major ones like i, esc, hjkl.
SmokeMachine I would like it a lot 11:13
apogee_ntv I'm also looking at wrapping treesitter to give it syntax highlighting
And AST level hierarchy for i.e. go to definition 11:14
Not going to implement a full code editor
But at least enough that it feels nice
SmokeMachine I'm looking forward to it... it would male the playground and some other projects I'm planing to start much nicer... 11:15
apogee_ntv I plan to do some widgets in a Selkie::X namespace, just to avoid making the base lib huge. 11:24
Like pulling in treesitter as a dep definitely doesnt belong in Selkie base.
Its a pretty heavy rust lib 11:26
Hm there's actually no full coverage treesitter plugin *for* Raku that I can find. 11:47
Maybe RakuAST can do this job better... 11:48
Hm, I will end up in a rabbithole if I keep looking at syntax highlighting :D Parking for now, its definitely doable but its a large chunk of work because the logic to do the actual highlighting from RakuAST is hard and treesitter probably cant cover slangs etc. 11:54
Though done right it could make the neovim experience less painful.
SmokeMachine for syntax highlight, it seems Rainbow should be used (as librasteve_ suggested) 12:05
apogee_ntv: is there some kind of a tree widget? I mean a widget to create trees 12:07
12:08 [dpk] joined, dpk left
apogee_ntv SmokeMachine: Not currently but I have trees in one of my projects 12:09
12:10 [dpk] is now known as dpk
SmokeMachine Would you be kind enough to share that code (or maybe if you have enough time, create a widget with that)? 12:12
apogee_ntv Yeah its only 1 level so not really a tree but should be easy to recurse, let me dig it up 12:14
Actually I implemented multi-level even though data is 1 level 12:15
12:19 soverysour joined, soverysour left, soverysour joined
SmokeMachine Even better! :) 12:19
apogee_ntv OK it's pretty deeply embedded in a whole bunch of other render logic lol but paste2.org/zX8IO1v4 should cover all of the tree render logic. 12:22
12:23 soverysour left
apogee_ntv This is for a TUI gtd app I've been building 12:23
And these widgets are specifically for tasks, not just lines of text, hence all the extra logic 12:24
I got fed up of paying for omnifocus so decided to rebuild it
wormhole.app/Pp6ElN#RhZthZVlnzS21rXK5BWbkQ Renders like this 12:27
tbrowder anyone having problems on github with "actions/checkout@v4"? if so, what's the fix? 12:28
apogee_ntv tbrowder: Use checkout@v5 I guess 12:29
or v6
I know Github actions are turning off Node 20 runners at some point but my v4s are still working atm
SmokeMachine apogee_ntv: it looks good! I’m planing on using that to list a match returned by a grammar parse 12:30
tbrowder ok, thnx, i'll try v5 which i assume works. in the early days i thought a raku person had to build the actions 12:31
apogee_ntv I am aiming for a v1 Selkie release sometime next month with a proper website, tree widget should probably be a high priority with collapse/expand logic. 12:35
Aiming to pull some non-Raku people over by offering the only route to notcurses that doesn't require you to know notcurses internals lol 12:36
Which is a vast api -- ~600 functions, full manual memory management, etc
I built ~90% Omnifocus parity in a week, thats a $150/yr commercial application. Kinda nice. 12:40
12:46 sibl left
SmokeMachine apogee_ntv: I totally agree Selkie is very very nice and I think it has the potential to bring people to Raku. I hope, once it’s done, Selkie::UI can also help a bit… :) 12:51
apogee_ntv I think it will, Selkie is verbose for simple things. 12:53
Selkie::UI seems not to be as verbose. 12:54
Well, I say Selkie is verbose, I'm used to writing raw notcurses and it's much more terse than that but probably building TUI in asm is less verbose than using notcurses (: 12:55
Great lib but it prioritises feature completeness & perf over DX at every junction 12:56
tbrowder btw, my problem was actually caused by a spurious comma on the end of a META6.json file. not an intuitive msg... 12:59
disbot2 <librasteve> oh - maybe post your reddit items to reddit/r/C_Programming ... there seems to be some notcurses stuff there 13:18
apogee_ntv Hm they might get upset when it's not in C though :D Selkie is half pseudo-C I guess. 13:23
Its a *lot* of NativeCall
disbot2 <librasteve> yeah - I guess 13:49
SmokeMachine librasteve_: I’m sorry, but I’m curious… so how did you implement the PR you closed on Cromponents today? 14:36
disbot2 <librasteve> PR? Cromponents? Me? Today? 14:38
<librasteve> Oh - short memory - sorry 14:39
SmokeMachine github.com/FCO/Cromponent/issues/19 14:40
disbot2 <librasteve> OK - three things I guess 14:43
<librasteve> (i) Air::Base::Nav is already a thing github.com/librasteve/Air/blob/b67...kumod#L403 and it and yes it takes a List of Pairs like this github.com/librasteve/raku.org/blo...akumod#L60 I did not make C(r)omponent a target - but no reason why not 14:47
SmokeMachine šŸ‘ 14:50
disbot2 <librasteve> (ii) the stubs refactor includes an explicit page tree - on reflection my thinking was to ape WordPress (!) and there an admin can dynamically change page name and reassign the parent (no restart) - so I realised that needs a catch all Cro route (here *@rest) github.com/librasteve/Air/blob/b67...kumod#L929
<librasteve> here is how to declare and inspect the tree github.com/librasteve/Air-Examples...stubs.raku 14:51
<librasteve> note that this also makes a robots.txt and a sitemap.xml 14:52
14:54 xkr47 joined
disbot2 <librasteve> (iii) I have kept the class Page does C(r)omponent does Sitemapped {...} so that entire pages can be stored in Red and you can easily extend to have a query to eg list all pages and their create dates, titles, descriptions (thing the archive view on rakudoweekly.blog) 14:56
<librasteve> the canonical WordPress model is that everything is a post and all gets stored in the posts table; the canonical Air model is that everything is a C(r)omponent and everything gets stored in Red via it's own model 14:57
SmokeMachine makes sense 15:02
disbot2 <librasteve> šŸ‘ (you are welcome to propose improvements to Air ofc) 15:03
15:40 itaipu left 15:46 human-blip left 15:48 human-blip joined
SmokeMachine librasteve_: I'm starting playing with this idea I think is closer to what was wanting: usercontent.irccloud-cdn.com/file/....49.05.gif 15:52
15:52 dakkar left
SmokeMachine but I plan to make the output a tree 15:53
and I want to make that tree selectable and when selected it would highlight the session on the string it corresponds to 15:54
15:57 itaipu joined 16:06 abraxxa left 16:12 soverysour joined, soverysour left, soverysour joined 16:18 andinus left
SmokeMachine is there a way to avoid infinite loop on generic grammars? or at least timeout grammars? when I do something wrong that starts a loop on this test, it hangs... 16:19
librasteve_ that looks reasonable 16:20
16:21 soverysour left 16:30 soverysour joined 16:40 soverysour left 16:41 human-blip left
lizmat SmokeMachine: perhaps you can figure out running with -Mownup and then pressing ctrl-c when it infiniloops 16:42
it will give you the stacktraces of all threads
16:43 human-blip joined 16:45 soverysour joined, soverysour left, soverysour joined 16:47 Guest35 joined 16:48 Guest35 left 16:50 soverysour left
SmokeMachine lizmat: thanks, let me try it out 16:55
lizmat: ownup? is that builtin? it wasn't found here... 16:56
lizmat oops, sorry 16:57
-Mown-up
and yes that's a builtin module
SmokeMachine it did not print anything... :( 17:03
lizmat ah? But it did stop execution? or not ?
SmokeMachine I ctrl+c it... 17:04
lizmat what happens if you: 17:07
$ raku -Mown-up -e 'loop { }'
and control-c that ?
SmokeMachine lizmat: on this example it hanged when I pressed * (`rule char {.*}`) and then after trying to write anything, arrows, etc and nothing happening, I ctrl+c usercontent.irccloud-cdn.com/file/....05.26.gif 17:08
let me try to golf it... 17:09
lizmat yeah, looks like Selkie is stealing control-c
m: use own-up; own-up
evalable6 (exit code 1) ===SORRY!=== Error while compilin…
lizmat, Full output: gist.github.com/274b49b3962c1db6fd...9efa47ef7e
lizmat m: VM.own-up 17:10
evalable6 (exit code 2)
==========
Thread 1 (perl6) requ…
lizmat, Full output: gist.github.com/14068bcce4f6c92961...293788ea64
lizmat if you can make it to execute "VM.own-up" an a control-c, you should be in business
SmokeMachine www.irccloud.com/pastebin/XxlZ1rNk/
lizmat Thread 1 is the interesing one... 17:11
but it doesn't tell us much :-( 17:12
SmokeMachine :(
I don't know what to do... :( 17:14
lizmat if you put that code in a text file and then run it, does it also hang? Am not sure whether this is a core or a Selkie issue at this point? 17:15
disbot2 <librasteve> I am considering a generic way to get from a Grammar to a populated object - ie if the attribute names match the token / rule names then they get loaded - a Transformer that takes a Match and a class name and returns an instance 17:19
<librasteve> does anything like that exist?
<librasteve> (in Raku land)
lizmat aren't actions allowing you to do that ? 17:20
disbot2 <librasteve> sure - but i’m too lazy to write a custom Action for each target class 17:21
<librasteve> maybe i can write a role on the class that takes the match object and then introspects :-) 17:22
<librasteve> does Actionable 17:23
17:28 andinus joined
SmokeMachine on my last message I tried that with no selfie... 17:30
m: grammar Bla { rule TOP {<char>+}; rule char {.*} } 17:31
evalable6
SmokeMachine m: grammar Bla { rule TOP {<char>+}; rule char {.*} }; Bla.parse: "asdf" 17:32
evalable6 (signal SIGHUP) «timed out after 10 seconds»
lizmat that feels like it should just match all chars... 17:40
SmokeMachine lizmat: that's expected to infinite loop, and that's usually ok... my problem is that I am running that grammar on every edit to the code, so it makes it much easier to happen... 17:43
17:46 soverysour joined 17:55 abraxxa joined
disbot2 <melezhik.> o/ 18:18
<melezhik.> So I am generating Sparrow task check DSL using Qwen 3.6 plus and results are pretty impressive 18:20
<melezhik.> Here are some examples for those who are interested
<melezhik.> verify output from rpm command to verify package is installed and has some specific version or greater then the one - chat.rockylinux.org/rocky-linux/pl...u4tpt5doar 18:21
<melezhik.> verify output from df command and validate that you have swap and home mounts , and that /root partition capacity is more then 20 percentage - rpa.st/LO4JE 18:22
<melezhik.> verify that input is valid date in ISO format and that this is current date - rpa.st/MPTAQ 18:23
<melezhik.> Sometimes it uses Python for handlers, sometimes Perl. I don’t know why )) 18:24
<melezhik.> github.com/melezhik/Sparrow6/blob/...kchecks.md
18:27 abraxxa left
disbot2 <melezhik.> If someone wants to try just let me know - I use Qwen for free from browsers 18:28
<melezhik.> The question should be: ā€œYou are sparrow task check dsl expert - use following links as documentation github.com/melezhik/Sparrow6/blob/...kchecks.md And generate task check dsl code to BLA BLA BLAā€ 18:29
Voldenet SmokeMachine: if you don't mind memleaks on abort, then maybe raw pthreads could work
(there's no uv_thread_abort, so you can't do this github.com/MoarVM/MoarVM/blob/0915...ads.c#L185 ) 18:35
any reliable timeouts in EVAL would pretty much require hacky threading magic though 18:42
18:42 abraxxa joined 18:47 soverysour left
disbot2 <melezhik.> verify output from raku -v command and verify that raku version is greater then 2026.04 - rpa.st/PJMXS 18:48
<melezhik.> This is kinda cool - LLM knows how to use zoom in expression ( within: )
19:53 perryprog left 19:54 perryprog joined 19:57 soverysour joined 19:59 soverysour left 20:17 perryprog left 20:18 perryprog joined 20:50 peder left 21:01 justache left 21:05 justache joined, justache left 21:07 justache joined 21:35 abraxxa left 21:41 Aedil left 21:53 perryprog left 21:58 perryprog joined
[Coke] easiest way to test something where you have to run the test on a given day? container? Maybe an override of Date.today? 21:58
disbot2 <librasteve> maybe override Date.today with a wrapper set from an ENV? 22:00
lizmat depends on how you create the Date object 22:13
m: use MONKEY; my class Date is Date { method today() { "2006-04-30".Date } }; dd Date.today 22:15
evalable6 Date.new(2006,4,30)
lizmat m: my class Date is Date { method today() { "2006-04-30".Date } }; dd Date.today # don't need MONKEY that way
evalable6 Date.new(2006,4,30)
22:17 Sgeo joined
[Coke] nice 22:38
22:47 silug left
apogee_ntv Currently bumping all of my packages to not use node 20 github actions, hopefully nothing breaks :D 23:15
I already had to adopt a Windows action for setting up msvc
[Coke] don't rush with that.
let me find you the bug...
github.com/microsoft/azure-pipelin...ssues/5464 23:16
Sounds like 20 is the recommended version right now and the warning was over-eager
ugexe [Coke]: I suspect `RAKUDO_RAKUAST=1 make install` never truly worked. what would have sort of worked was doing like `make install && RAKUDO_RAKUAST=1 make install` 23:17
which is an easy state to find yourself in and not realize it 23:18
[Coke] ah, ok.
do you want github.com/rakudo/rakudo/issues/5906 ?
ugexe since make doesn't know that environment variable means the artifacts it would generate wouuld be different
i already submitted PRs to make it work 23:19
apogee_ntv [Coke]: Node 20 is EOL Apr 30th
[Coke] ahhh.
apogee_ntv: ah, those tickets were complaining about the warning in advance, didn't realize we were that close.
ugexe PRs 6123 through 6127 are for make install 23:20
apogee_ntv I dont think they will remove it from Github Actions until probably Oct
ugexe the ones after that are for make test and make spectest
apogee_ntv But it does go EOL today (as of UK time)
23:21 perryprog left
apogee_ntv Raku/install-rakudo action is really flaky atm 23:21
Raku/setup-raku*
Times out on about 20% of runs. 23:22
ugexe i've merged the PRs that anyone left a comment or emoji on 23:23
[Coke] ugexe++ 23:29
23:35 perryprog joined