beneroth changed the topic of #picolisp to: PicoLisp language | The scalpel of software development | Channel Log: https://libera.irclog.whitequark.org/picolisp | Check www.picolisp.com for more information
bjork1intosh has quit [Ping timeout: 260 seconds]
pablo_escoberg has quit [Quit: Client closed]
geri has joined #picolisp
<geri> hey, feel free to trash it https://0x0.st/Xies.pil
<geri> :D
<geri> (cant use the native alias cause old version)
geri` has joined #picolisp
geri` has quit [Client Quit]
<geri> ive killed emacs but somehow my buffers were fine; magic
<abu[7]> Good morning
<geri> morning
<geri> ive switched shebang from pil to picolisp and now my script runs 2x faster
<geri> xd
<geri> as if it couldnt get any more insane
<abu[7]> I have not studied it, but what is important is the naming conventions
<abu[7]> (dst) should be (Dst) etc
<abu[7]> Otherwise you get unexpected conflicts
<geri> is every argument captialized
<geri> i had a conflict with file, so now its dst
<abu[7]> Every "locally bound symbol"
<geri> like everything i write basically?
<abu[7]> There is a chapter on naming conventions in @doc/ref.html
<abu[7]> I always wonder why people use "#!/usr/bin/env pil"
<abu[7]> Why not simply "#!/usr/bin/pil" ?
<abu[7]> env wastes the argument
<geri> cause only thing in /usr/bin i have is env lol
<geri> nix thing
<geri> i use env for everything except /bin/sh cause its supposed to always be there
<geri> i.e. portability reasons
<geri> but yeah you cant do stuff like #!/usr/bin/env bash -e by default for example, which sucks sometimes
<abu[7]> The point in pil is that you can use #/any/path/pil
<abu[7]> and "#!/any/path/pil <arg>"
<abu[7]> I don't understant what advantage "env" has
<geri> it doesnt matter where pil is installed globally
<geri> so if i set up pil to be in ~/pil and add ~/pil/bin to $PATH my scripts will still work
<geri> +- setting up library stuff
<geri> and i dont need to patch shebangs for that either
<geri> what do you usually use for argument in shebang?
<abu[7]> I usually have /usr/bin/pil and /home/abu/pil21/bin/pil etc
<abu[7]> So I specify in the hashbang which one to use
<geri> well you kinda need to do it because one is for dev and another one is for "prod"
<geri> except you can still use dev shebang and itll work fine even if other one uses env, long as you dont add incompatabilities by adding both to $PATH
<abu[7]> Sometimes I had also different ones for prod
<abu[7]> e.g. pil64 for old apps
<geri> idk, im not yet at a level to use 4 different pil interpreters on one machine
<geri> :D
<abu[7]> How does 'env' know the right path if it is not the standard?
<geri> it can find anything in $PATH
<geri> for me #!/usr/bin/env picolisp resolves to
<geri> #!/nix/store/0wd45b94yzpbgshv19g9hj77sj2k5kjd-picoLisp-20.6/bin/picolisp
<abu[7]> OK, no worry, I was just wondering
<abu[7]> I don't use env
<geri> basically for portability env is king, but for security you wanna hardcode all paths
<geri> but if someone can mess with your $PATH youve likely got bigger problems t
<geri> han someone just adding malicious a script to your path
<geri> but if youre really paranoid you want to disable all execution rights *and* hardcode all paths to stuff that can be running
<abu[7]> :)
<geri> hows this
<abu[7]> Looks good
<geri> and runs even better B)
<geri> 9x faster than emacs lisp version
<abu[7]> Do you call (sysdefs "unistd") somewhere?
<abu[7]> to set the value of PATH_MAX
<geri> not really
<geri> idek what it does
<abu[7]> sysdefs is for system constants
<abu[7]> otherwise PATH_MAX is NIL
<abu[7]> Just call (sysdefs "unistd") at start somewhere
<geri> ye sec
<abu[7]> Minor detail: (= NIL (info File)) is better (not (info ...
<abu[7]> But 'not' also can usually be avoided
<abu[7]> by using the reverse conditional
<abu[7]> (when (info ...) ...
<abu[7]> As (not (= .. becomes (<> ...
<abu[7]> Just cosmetics
<geri> so in symlink? i can replace not = with <>?
<abu[7]> T
<geri> i use a bunch of when's and unless'es but cant really do that when i need to return a single boolean
<geri> like in symlink? function
<abu[7]> 'when' and 'unless' return NIL if the condition is not met
<geri> ye, although idk how to apply it to symlink function
<geri> cause you usually use when to do stuff when a conditon is true
<geri> and here i only need to know if that condition is true, not do anything
<abu[7]> Isn't this correct? (and (info File T) (info File) (<> (car @) (car (info File T))))
<geri> thing is, you can have empty symlinks, pointing nowhere
<geri> thats what (= NIL (info File)) checks
<abu[7]> or (let? I (info File T) (and (info File) (<> (car @) (car I]
<abu[7]> to avoid duplicate info calls
<abu[7]> (info is a bit expensive)
<geri> okay lets see...
<abu[7]> Or jusbn (<> (car (info File)) (car (info File T))) :)
<abu[7]> hmm, no!
<abu[7]> wont work if both info calls are NIL
<geri> mhm
<geri> problem is (info File T) will return something for any file
<geri> so im adding more conditionals to make sure
<abu[7]> But (let? I (info File T) (and (info File) (<> (car @) (car I] should work, no?
<geri> ig it should, im just processing it really slowly
<abu[7]> Probably I over-simplified
<geri> i mean, i understand how its going, but logic is not as obvious
<geri> lemme just test it rq
<geri> it doesnt see a void link as a link...
<geri> thats when (info File T) is true but (info File) is false
<abu[7]> yeah
<geri> (de symlink? (File) (let? I (info File T) (or (not (info File)) (<> (car @) (car I)))))
<geri> seems to work
<geri> double not though xd
<abu[7]> I think this is not right
<geri> logic is "link file exists, source file either doesnt exists or link and source are different kinds of files"
<abu[7]> (not (info File)) overwrites '@'
<geri> oh
<geri> xd
<abu[7]> So instead of (or (not ... use (and ...
<geri> how do i check that file either doesnt exist or is different from the link with an "and"?
<geri> xd
<geri> oh it might also mess up if i symlink symlinks
<geri> what a pain
<geri> maybe theres a neat C function for this and im dumb
<abu[7]> perhaps :)
<abu[7]> But is this not correct? (let? I (info File T) (and (info File) (<< (car @) (car (info File T)))))
<abu[7]> It seems a direct translation of your first version to me
<geri> no, it yet again falls over on void symlinks
<geri> you can have a symlink that points nowhere, but its still a symlink
<abu[7]> I forgot I above
<abu[7]> (let? I (info File T) (and (info File) (<< (car @) (car I))))
<geri> check it with ln -s nowhere test
<geri> its called a broken symlink, nvm
<abu[7]> yes, but <> should fail then
<abu[7]> (I have not tested here)
<geri> <> wont fail, cause nil is nil
<geri> but its (car I) vs info
<abu[7]> But (info File) is not NIL
<geri> so they are different but not
<geri> if it doesnt exist it is NIL
<abu[7]> I just shortened your original version
<abu[7]> (not (= etc
<geri> idk man im confused at this point
<geri> lmao
<geri> let me try if readlink can do it
<abu[7]> Yes, better anyway :)
<geri> do we have a function to expand paths somewhere
<geri> not only @ but ~ and / too
<abu[7]> ~ does expand in pil21
<geri> with (path)?
<geri> ive managed to compile newest version and vip works too but i havent fixed libs yet
<abu[7]> yes, (path) knows ~
<geri> amazing
<abu[7]> : (path "~/foo")
<geri> ill package newer one a little faster
<abu[7]> -> "/data/data/com.termux/files/home/foo"
<geri> you're working from a phone??
<abu[7]> Yes
<geri> that's epic
<abu[7]> I don't use laptops since 2015
<geri> thats very epic
<abu[7]> only Termux on Phone
<geri> do you use a physical keyboard tho
<geri> oh, those circles are *your* *actual* keyboard?
<abu[7]> yes
<abu[7]> The tablet is out of use meanwhile
<abu[7]> Thinking to buy a larger phone though (Pixel Fold)
<geri> i got a glove80 so i know about weird keyboards but this is pretty out there :D
<abu[7]> But Pil21 was all developed on 6 inches
<geri> yeah thats honestly amazing
<abu[7]> Penti takes time to learn
<geri> i use a 32 key setup
<geri> )
<abu[7]> But then it is really nice to be able to work anywhere
<abu[7]> How 32 keys?
<geri> asdf are themselves when pressed but super alt ctrl shift when held
<geri> also takes some time to get used to but i can type anything and its really comfy
<abu[7]> Interesting
<geri> i want one of those real 34 key keebs some time, they're so cute
<geri> and ultra portable too
<geri> # if File points to anything other than itself - it's a symlink
<geri> (de symlink? (File) (<> (readlink File) File))
<geri> it works lol
<abu[7]> ☺
<abu[7]> I see, you really focus on keyboards?
<geri> i honestly used it only for like 4 months, but its so comfy
<geri> 99% of stuff i do could be done in termux but it doesnt feel as homey as my linux setup
<geri> although ive been thinking about switching to phone-only a few times cause its so much more portable and energy efficient
<abu[7]> T
<abu[7]> So I think optimal is a foldable phone
<abu[7]> A more portable tablet )
<geri> maybe
<geri> if i were to go mobile only rn i cant see myself doing anything other than just docking it and using a big screen w/ normal keyboard at home
<abu[7]> Don't know how durable they are
<abu[7]> For me is important to have it while walking or in the train
<abu[7]> I never work at a desk
<geri> not as durable as normal phones afaik
<abu[7]> T
<geri> i mean, if you dock your phone you can work with proper ergonomics and then just undock and work whereever however
<geri> imo best of both worlds
<abu[7]> Penti is a lot more comfortable
<geri> maybe you also need to check out 34 keys)
<abu[7]> I use it also with my PC in the basement
<geri> but yeah thats fair
<geri> wait what
<geri> is it touchscreen
<abu[7]> No, I cant carry it in my pocket
<geri> i mean like
<geri> penti is for touchscreens no?
<abu[7]> I drive my PC in the basement via phone + Termux and Penti via ssh
<geri> ah
<geri> yeah thats how i debugged the build
<abu[7]> The output is on my TV screen if I need a big display
<abu[7]> But keyboard is always Penti
<geri> very cool
<abu[7]> Penti serves also as mouse
<abu[7]> by tilting the phone
<abu[7]> But I use the TV only seldom
<geri> magic
<abu[7]> a few times a month perhaps
<abu[7]> only to view PDFs etc
<geri> did you write penti too
<abu[7]> yes
<geri> amazing
<geri> plant a tree, raise a son and make your own programming language and your own keyboard too
<abu[7]> hihi
<abu[7]> Like you do with 32 kb
<geri> yes!
<geri> i got a gaming layer too, although rebinding everything can be a little tedious
<geri> im curious, have you done a typing speed test before on the penti?
<abu[7]> Not really. In fact I was faster with 1--finger touch typing
<geri> 1 finger touch typing xd
<abu[7]> 10 :)
<geri> just realized my symlink function actualy matches non existant files
<abu[7]> oh
<geri> (de symlink? (File) (and (info File t) (<> (readlink File) File) ) )
<geri> now it seems fine
<geri> if link file exists and points to anything other than itself
<abu[7]> t -> T
<geri> i keep on messing it up
<abu[7]> 't' is a fun :)
<geri> what does it do
<geri> actually it shouldnt matter cause info checks if last arg is anything but nil no?
<geri> but yeah, i keep on messing it up ~w~
<abu[7]> It returns T
<geri> why xd
<abu[7]> (t (a) (b)) is the same as (prog (a) (b) T)
<abu[7]> Similar for 'nil'
<geri> do stuff and return t or nil?
<abu[7]> right
<geri> okay
<abu[7]> Useful if only a single exe is allowed
<abu[7]> e.g. in 'if'
<abu[7]> (if (x) (t ...) (foo) (bar))
<geri> why not just use progn
<geri> prog*
<geri> inb4 "less typing"
<abu[7]> (prog (a) (b) T) is longer, yes
<geri> spaces between closing parens are to easier see where to check for starting paren right?
<abu[7]> yes, only for that
<geri> from cl and elisp it looks very jarring honestly
<abu[7]> Dunno, I do this from early on
<abu[7]> Saw it somewhere
<geri> idk, i started when editors could already highlight paren pairs
<abu[7]> This is independant
<abu[7]> It is more readable
<abu[7]> to see where the exe on this line ends
<geri> maybe once i get used to it
<abu[7]> Not for the paren balancing
<abu[7]> Not a big thing, just cosmetics
<geri> yeah
<geri> if that were what would put me off from using the language id be no better than 90% of lisp haters
<abu[7]> :)
<aw-> hi geri, welcome to PicoLisp
<geri> hello
<abu[7]> Hi aw
<aw-> hi abu[7]
<geri> i think im ready to collect a personal library already :D
<abu[7]> cool
<geri> i used (native "@" "getenv" 'S "HOME") before finding out that sys does that xd
<abu[7]> That's always the problem :)
<abu[7]> To find what is there
<geri> yeah, i think i saw it in some other code of yours
<abu[7]> I also forget such things occasionally
<abu[7]> Often grep around
<geri> only after you told me about (doc) had i found all the files are there for me to grep through
<geri> id honestly find it easier to find stuff in browser interface if it were all in one html file
<abu[7]> True
<geri> thank god for grep
<abu[7]> With "grepping" I thought more about sources though
<abu[7]> Especially old projects in my case
<geri> dont have any to be able to relate
<abu[7]> How did I do that 10 years ago?
<geri> i didnt :D
msavoritias has joined #picolisp
<abu[7]> ☺
<geri> i started with linux like 4 years ago
<abu[7]> ok
<geri> and now im also an enthusiast programmer
<geri> but for me first writing a fast language and then also writing yourself an editor in that sounds insane
<abu[7]> It all accumulated over the years
<geri> were first versions of picolisp slow?
<abu[7]> Sometimes it is easier to write your own
<geri> yeah, i script a lot of things
<geri> instead of using note taking apps and stuff like that
<abu[7]> T
<geri> i wrote tetris at least
<geri> :D
<abu[7]> Nice!
<abu[7]> Nev
<abu[7]> I never tried to write tetris
<geri> its in CL and uses ncurses
<geri> only real struggle was figuring out how to do rotation
<abu[7]> 👍😎
<geri> in the end i just hardcoded relative coordinates
<geri> but it works and feels pretty snappy too
<abu[7]> Did you see Pil Chess?
<geri> no, but ive seen sources yesterday
<geri> gonna check later
<abu[7]> You can try online
<abu[7]> Or in PilBob
<abu[7]> Or in PilBox
<geri> ive written cli chess before too, hadnt figured out move generation though
<geri> this is honestly amazing
<geri> is there any difference between adding @lib.l to shebang vs (load)ing?
<abu[7]> Both go down to 'load' internally
<geri> @lib syntax is defined in lib.l right?
<geri> will load know how to expand @'s if lib.l is loaded in same call
<abu[7]> yes
<geri> okay cool
<abu[7]> The 'path' logic is used for all file accesses
teddydd has quit [Ping timeout: 255 seconds]
<abu[7]> Built in the base system
<geri> oh it is?
<abu[7]> Yes, not in @lib.l
<geri> @lib expands to just lib in my packaged version
<geri> i mustve messed something up
<abu[7]> Expanding with e.g. 'path'?
teddydd has joined #picolisp
<abu[7]> It is not a packaging issue I think
<geri> (path "@lib/net.l") -> "lib/net.l"
<abu[7]> @ is expanded from the invocation
<abu[7]> This may be correct
<geri> gotta check how @ gets expanded
<abu[7]> if your current dir is at this place
<geri> if its hardcoded to /usr/lib/picolisp no wonder it doesnt owrk
<geri> cause usr/lib doesnt exist xd
<abu[7]> It in not hardcoded
<abu[7]> 'pil' determines it on the fly
<geri> how does it do that?
<abu[7]> Ah, maybe you used the wrong 'pil'
<abu[7]> exec ${0%/*}/bin/picolisp ${0%/*}/lib.l @ext.l "$@"
<abu[7]> pil21/pil
<abu[7]> the one in pil21/bin/pil is for /usr/bin iirc
<abu[7]> bin/picolisp determines the path from the first file argument
<abu[7]> (usually lib.l)
<geri> oh
<abu[7]> Probably 'env' gets it wrong!!! :D
<geri> xd
<geri> im trying to make it work with pure picolisp executable rn
<abu[7]> that's fine
<abu[7]> I have such scripts too
<abu[7]> On Termux I have:
<abu[7]> #!/data/data/com.termux/files/home/pil21/bin/picolisp /data/data/com.termux/files/home/pil21/lib.l
<abu[7]> Ugly though
<geri> extremely ugly
<geri> !
<abu[7]> T
<geri> isnt there also a max size for shebang
<abu[7]> May well be
<geri> okay it expanded properly
<geri> very interesting
<geri> yeah it has to be actualy first argument
<geri> rip env with pure picolisp executable
<abu[7]> So in any case, the first file passed to bin/picolisp must have the relatave or absoluutte path
<geri> relative to the executable?
<abu[7]> No, to the current working dir
<abu[7]> For example, I start production apps in /home/app
<abu[7]> or /home/app/foo
<abu[7]> when in foo, it is started as ../pil21/pil ...
<abu[7]> PATH is irrelevant
<geri> but PWD is relevant then
<geri> which is probably fine for some things
<abu[7]> yes
<geri> okay, my wrapper works
<abu[7]> You have control in each app what to start
<geri> now just gotta find out why even (+ 1 2) takes a full second
<geri> xd
<geri> the original packager uses make gate
<geri> hmm
<abu[7]> Oh!
<abu[7]> That's OK
<abu[7]> Perhaps you'll need HTTPS
<geri> its trying to load https lib on every call?
<abu[7]> No, it is a separate proxy
<geri> then whats the idea behind needing https
<abu[7]> @doc/httpGate.html
<geri> no rule for `make gate`
<geri> is that part outdated?
<geri> maybe i didnt use proper ssh package - i was trying to use openssl
<geri> ssl*
<abu[7]> No support for pil64 any more :)
<geri> huh
<geri> i dont quote understand how its related to execution delay though
<abu[7]> Indeed
<abu[7]> Speed in general is OK?
<geri> segfault lol
<geri> sec
<geri> and now this is there unistd finally decides to get sysdef'd
<geri> bootstrap actually runs fine
<geri> very interesting
<geri> hm
<geri> so repl is slow as hell but execution is fine
<geri> i forgot to add one thing to the wrapper sec
<geri> lets just try patching shebang
<abu[7]> Pil64 has no sysdef mechanism
<geri> is my 4yo version pil64?
<abu[7]> and also does not use standard readline
<abu[7]> Must be if it makes "gate"
<geri> wait so im using the version before the llvm rewrite?
<geri> and its still this insanely fast??
<abu[7]> Yes
<geri> this is amazing
<abu[7]> Pil64 is written in assembly even
<abu[7]> a generic assembler
<abu[7]> (vi 'car)
<abu[7]> should go to @src64
<geri> i should add vip to bin sec
<abu[7]> 'vi' was in pil64, it called Vim
<abu[7]> No need for bin
<geri> cant find any of vim vi v lol
<abu[7]> Vim or Vip are called from the REPL
<geri> undefined
<geri> oh wait
<geri> +
<abu[7]> yes :)
<abu[7]> Not sure if Vip was already in pil64 too
<geri> oh right
<geri> this stuff
<geri> i was wondering the hell that language was
<geri> xd
<abu[7]> :)
<geri> cause looks like lisp for like 2 seconds
<abu[7]> Pil was first C, then PilAsm, and now PilSrc (LLVM)
<geri> [/nix/store/bm3j6k0aj6dpp1737jixcd643b1dj4zm-pil-21/lib/picolisp/lib/map:1] !? (while (read) (let priv~Sym @ (if (get priv~Sym '*Dbg) (set @ (read)) (put priv~Sym '*Dbg (cons (read)))))) while -- Undefined
<geri> huh
<geri> thats when using + with my package
<geri> what a fun adventure!
<abu[7]> Hmm ...
<geri> oh wait i know
<geri> and now repl is fine
<geri> 🎉
<abu[7]> I really recommend to switch to the current version
<geri> i said i just fixed current version
<geri> so i can actually switch to it
<geri> xd
<abu[7]> Oh! Cool, did not understand :)
<geri> nice and fast and with %@ alias)
<abu[7]> 👍
<geri> how much does picolisp without pil wrapper actually include?
<abu[7]> Quite a lot
<abu[7]> bin/picolisp and then (all)
<abu[7]> All what is in @src
<abu[7]> BTW, '%@' is more than an alias. It is also a little more efficient
<geri> a very good alias!
<geri> oh, you call mkdir -p in lib.l instead of reimplementing it
<abu[7]> T :)
<abu[7]> Yes
<geri> original version of bootstrap script was like a shell script - it called test and ln and rm
<geri> and was like a billion times slower than emacs script
<abu[7]> Y
<geri> did `call' improve a lot since pil64?
<abu[7]> No relevant change I think
<abu[7]> What could be improved?
<geri> idk, but removing external calls reduced my script's running time from 0.3 seconds to 0.01
<geri> it could be something was wrong with pil64
<geri> *with my pil64
<abu[7]> 'call' has overhead in general
<abu[7]> forking, doing tty stuff
<geri> yeah, but my shell script uses external calls for a ton of things and still ran like 4 times faster
<abu[7]> Better than calling mkdir would be a native call
<abu[7]> But you don't usually create tons of dirs
<abu[7]> A single call does not matter
<abu[7]> Instead of (
<abu[7]> Instead of (call "rm"
<geri> im planning to use pil for scripting mainly, so maybe ill accumulate a whole lib for these kinds of things
<geri> cant promise anything yet
<abu[7]> I sometimes do a native link call
<abu[7]> Native is as easy for mkdir
<geri> except for -p
<abu[7]> Right
<geri> replacing test -L call with a symlink? function decreases execution time form 0.249 seconds to 0.013 seconds
<geri> at least in my case cause its done in a loop a bunch of times
<abu[7]> Wow
<geri> ikr
<geri> its near like 40 calls though
<geri> if i want to define 3 functions that do the same thing but are called differently, how could i do that?
<abu[7]> Usually you can interprete the args
<abu[7]> dispatch on the type
<geri> hmm
<abu[7]> Can you show a simple example?
<geri> just define 3 identity functions foo bar baz
<geri> im wondering how i could neatly map native functions to pil functions + curious
<geri> mostly curious
<geri> :D
<abu[7]> 3 identity functions?
<geri> ((x) x)
<abu[7]> (def 'baz foo)
<abu[7]> ((X) X) :)
<geri> oh you can do aliases like that?
<abu[7]> T
<geri> like do (de NAME (thing) thing) for 3 things in a loop
<geri> 3 names*
<abu[7]> The identity function is just 'prog'
<abu[7]> faster than ((X) X)
<geri> thats interesting but its just an example
<abu[7]> (for Sym (...) (def Sym ...
<geri> thats just one thing id do with a macro in cl cause defun is a macro
<abu[7]> No macro needed, as defining is not compilation
<abu[7]> So a function like 'def' is good
<abu[7]> You can also use 'set'
<geri> okay lets go the other way
<abu[7]> (set 'baz foo)
<abu[7]> (setq baz foo)
<geri> how do i force `de` to actually evaluate its first argument
<abu[7]> That's what 'def' does
<abu[7]> 'de' is just a quoting frontend to 'def'
<geri> ah
<abu[7]> (vi 'de)
<abu[7]> just 3 lines
<geri> okay
<geri> like set vs setq
<abu[7]> yepp
<geri> its neat that (vi) actually works now
<geri> and i didnt even add vip to path yet
<abu[7]> Perfect
<geri> in @lib.l, why use strings for arguments?
<abu[7]> Transient symbols
<abu[7]> file-local
<geri> arent function arguments always local though?
<geri> for example in abort
<abu[7]> The bindings are local, but not the symbols
<abu[7]> They may conflict
<abu[7]> There is a section in the FAQ
<geri> oh, overriding string value for translation is neat
<abu[7]> "Are there no problems caused by dynamic binding?"
<abu[7]> Instead of transients we can now also use (private)
<geri> okay, magical
<abu[7]> @lib.l uses transients to be as lightweight as possible
<abu[7]> Must stop, bbl
<geri> i also gotta go for a stroll
<geri> also later!
<abu[7]> ☺/
<geri> is vip any configurable?
<geri> just want to change colors slightly honestly :D
<geri> its against simplicity so i wouldnt be surprised if not
<abu[7]> Your suspition is quite right, but you can redefine anything in ~/.pil/viprc or local .viprc files
<abu[7]> Or of course directly in @lib/vip.l
<geri> straight-up override anything?
<geri> that sounds real fun
<abu[7]> 'undef' perhaps first
<abu[7]> or 'patch' stuff
<abu[7]> The viprc files are loaded in 'vip' namespace
<abu[7]> You can e.g. (setq GREEN BLUE) :D
<geri> XD
<geri> thats amazing
<abu[7]> There is a @doc/viprc.sample
<geri> ah
<geri> i should check the doc directory better
<abu[7]> :)
<abu[7]> I have ".pilrc" and ".viprc" in most working dirs locally
<geri> im far from ready to go that way xd
<abu[7]> No hurry ☺
<geri> if you told me you never leave a pil interpreter id honestly believe you
<geri> almost like emacs users
<geri> but way more style
<abu[7]> Thanks! I have no experience with emacs
<geri> ive used vim + tmux for a year or so
<geri> my emacs setup is pretty much the same thing but everything is hackable and interspectable and easy to integrate
<geri> but i think its gonna be easier for you to write your own emacs than get into this one
<abu[7]> Ah, yeah, tmux is great
<geri> it is
<abu[7]> I have it on all machines
<geri> i have some sort of vi clone on every machine i have
<geri> gotta hack on some stuff, laters
<abu[7]> 👍
geri has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.3)]
bjorkintosh has joined #picolisp
bjorkintosh has joined #picolisp
chexum has quit [Ping timeout: 260 seconds]
chexum has joined #picolisp
casaca has joined #picolisp
msavoritias has quit [Ping timeout: 256 seconds]
pablo_escoberg has joined #picolisp