Comments (12)
yes, you can set _G.print to override it. I do this in the luvit pretty-print package. https://github.com/luvit/luvit/blob/master/deps/pretty-print.lua#L295-L304
from luvi.
it seems that pcall(func)
does not use _G. is that true?
from luvi.
if it is, how to I pcall
a function while allowing access to _G?
from luvi.
from luvi.
pcall
should work. See also http://www.freelists.org/post/luajit/pcallxpcall-broken-in-v21-if-JITed
from luvi.
FWIW, I released a new luvi, lit, luvit, and friends yesterday that has the fix from luajit mentioned in that post. Try again after updating just in case that was the problem.
from luvi.
The issue is a function called with pcall can't access the functions I define before running it
from luvi.
How are you defining them?
from luvi.
Thru _g and normally
from luvi.
How exactly? There is no such global _g
, the case matters.
In other words, share a snippet of code that reproduces the problem. Luvit obviously customizes print globally and it works great. So we know it's possible, but something is wrong with your code.
from luvi.
I meant _G
from luvi.
Perhaps unlikely, but make sure the function's environment is not being changed (by setfenv
) before it gets pcall
'd. For example, this would cause the problem you're talking about:
local oldprint = _G["print"]
_G["print"] = function(...) oldprint("New print called") end
local callee = function()
print("This shouldn't print")
end
setfenv(callee, {print = oldprint})
pcall(callee)
running that would output:
> lua test.lua
This shouldn't print
from luvi.
Related Issues (20)
- Termux/aarch64: Segfaults at 97% build progress HOT 18
- Consider using zig cc to make prebuilt binaries HOT 27
- Update to OpenSSL 1.1.1g HOT 2
- Luvi on arm HOT 4
- Error building lit with luvi HOT 4
- Install on raspbian HOT 2
- wolfssl openssl
- Build failure with custom LuaJIT (OpenResty fork) HOT 15
- Build failure on Apple Silicon HOT 8
- Example for a simple SSL-TCP-Server with luvi (not luvit) HOT 2
- CI deploy authorization failing
- travis-ci.org is dead
- "unprotected error in call to Lua API" with custom ARM binary HOT 8
- Installing on ARM64 (Ubuntu 20.04) HOT 1
- Build error (M1 mac) HOT 2
- "rex" should be "rex.pcre" HOT 1
- Build for Apple's arm64 processors HOT 2
- [string "bundle:main.lua"]:1: module 'weblit' not found: HOT 1
- Failed building in Termux with shared OpenSSL 3.0, PCRE, and Luv HOT 3
- luvi-regular-Linux_aarch64 Support? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from luvi.