code: def update():
      code = editor.text()
      local = {}
      glob = {}
      try:
          exec(code, local, glob)
          vert = glob["VERTEX"]
          frag = glob["FRAGMENT"]
          editor.clear_marker()
      except Exception:
          vert = traceback.format_exc()
          frag = ""
          tb = sys.exc_info()[2]
          while tb is not None:
              # print(tb.tb_lineno, tb.tb_frame.f_code.co_filename)
              try:
                  if tb.tb_frame.f_code.co_filename == "<string>":
                      editor.set_marker(tb.tb_lineno - 1)
              except Exception:
                  pass
              tb = tb.tb_next
  
      vertex.setText(vert)
      fragment.setText(frag)
  
file_path: vispy/examples/basics/scene/modular_shaders/sandbox.py
imports: from PyQt5 import QtCore
  from PyQt5.QtWidgets import *
  import sys
  import traceback
  from editor import Editor, HAVE_QSCI
label_desc: Use image node_id 4 for calling a global function with example usage: update() without return types