On Wed, Nov 7, 2018 at 12:18 PM Marcel Krüger <tex@2krueger.de> wrote:
Hi,

I recently discovered that the Lua wrapper of mplib registers all callbacks globally
such that creating multiple mplib instances with different callbacks breaks.


why not this ?

 \directlua{
      local current_instance  
      local custom_find_file =  custom_find_file or {}
      local mp_find_file_driver = function(name, mode, type) print("I am ",current_instance) if custom_find_file[current_instance] then return custom_find_file[current_instance](name, mode, type) else  return  "unregistered" end end 
      custom_find_file['mp1'] = function(name, mode, type) return name end
      custom_find_file['mp2'] = function(name, mode, type) if name == 'cmr10' then print'This should not happen' end return name end
 

      local mp1 = mplib.new{ 
        find_file = mp_find_file_driver
      }

      local mp2 = mplib.new{
          find_file = mp_find_file_driver
        }
      current_instance = "mp1"
      mp1:execute[[
        input cmr10;
      ]]

      current_instance = "mp2"
      mp2:execute[[
        input cmr10;
      ]]


    }
    \bye

--
luigi