[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: print() and the interactive prompt
- From: Patrick Donnelly <batrick@...>
- Date: Wed, 13 Jul 2011 20:43:55 -0400
On Wed, Jul 13, 2011 at 8:32 PM, HyperHacker <hyperhacker@gmail.com> wrote:
> On Wed, Jul 13, 2011 at 18:27, Patrick Donnelly <batrick@batbytes.com> wrote:
>> On Wed, Jul 13, 2011 at 8:22 PM, HyperHacker <hyperhacker@gmail.com> wrote:
>>> On Wed, Jul 13, 2011 at 16:42, Patrick Donnelly <batrick@batbytes.com> wrote:
>>>> Use debug.getinfo to see if your replacement print function is being called
>>>> from the first function on the call stack (the interpreter). It would look
>>>> like:
>>>>
>>>> if debug.getinfo(3) == nil then
>>>> -- interpreter
>>>> else
>>>> -- normal
>>>> end
>>>
>>> You might also play with the LUA_INIT environment variable. This is
>>> used by both the interpreter and the interactive prompt, but from
>>> there you can do things like define your own prettyprint() in a
>>> startup script, and just do print=prettyprint whenever you start the
>>> prompt. There are also command-line options you can use to similar
>>> effect.
>>
>> Um, you just described what the OP is already doing. He wants his
>> print replacement function to distinguish between the interpreter
>> calling print and a script calling print. My response gave him a
>> solution...
>>
>> --
>> - Patrick Donnelly
>>
>>
>
> Ah yes, I didn't read the original message close enough...
> Your method seems like it could fail if you did print() from the
> outermost scope of a script. Are there really three stack levels at
> that point?
If you tested it you would see it in fact works.
--
- Patrick Donnelly