Lua のテストで nyagos を起動すると、 exit が要るかどうか、よく分からなくなるので。
次のようなコードを .nyagos へ追加した。
nyagos.env.NYAGOS_RECURSE = tostring( tonumber( nyagos.env.NYAGOS_RECURSE or "0") + 1 ) nyagos.env.prompt = '[' .. nyagos.env.NYAGOS_RECURSE .. '] ' .. '$L'.. (nyagos.env.COMPUTERNAME or "") .. ':$P$G$_$$$s'
今回は nyagos.prompt フックを横取りするようなことはせず、単純に環境変数 PROMPT
の文字列を変更するだけに留めた。
nyagos のネスト回数は、環境変数 NYAGOS_RECURSE
に記録するようにした。未定義ならゼロ扱いとする。
結果は次のとおり:
[1] <DESKTOP-NPOTG52:~> $ nyagos Nihongo Yet Another GOing Shell 4.4.14_0-75-g85cf058e-windows-amd64 by go1.20.14 (c) 2014-2024 NYAOS.ORG <https://github.com/nyaosorg/nyagos> loadfile C:\Users\hymkor\share\bin\.nyagos start ~\share\bin\.nyagos loadfile C:\Users\hymkor\Share\etc\gmnlisp_.lua loadfile C:\Users\hymkor\Share\etc\complete-jj.lua done amd64/.nyagos [2] <DESKTOP-NPOTG52:~> $
余談 (1)
nyagos.env は環境変数の読み書きをするために設けられたが、「現在は」 Lua 標準関数の os.getenv を使っても問題ない。これは Lua のインタプリタを GopherLua にしたからだ。
昔のnyagos は LuaBinaries の lua54.dll を使っていたので、os.getenv を使うと得られる値がANSI(非UTF8)となってしまう。それを避けるため nyagos.env を作った。1
余談 (2)
Perl の経験があると、Lua を書くとき、よく脳が混線してしまう
困ったもんだ。