Zulip Chat Archive

Stream: metaprogramming / tactics

Topic: Introspecting environment extensions


nrs (Jan 16 2025 at 19:51):

Is it possible to introspect environment extensions from within CoreM? I know that environment extensions can only be registered during initialization, but is any of their data accessible from CoreM? Ultimately the goal is to check the environment extension for parsers to see how to modify it to replace the formatter used by a specific parser.

nrs (Jan 16 2025 at 19:53):

We can access values of type EnvExtensionState from let env <- getEnv and then considering env.extensions, but I'm not really sure how I could dbg_trace members of the resulting array

nrs (Jan 16 2025 at 21:31):

import Lean
import Batteries.Tactic.OpenPrivate

open Lean Meta
open private envExtensionsRef from Lean.Environment

abbrev ref := envExtensionsRef -- these are nameless but they are indexed, maybe it has more extensions than persistentEnvExtensionsRef?
abbrev persref := persistentEnvExtensionsRef

def printPersExts : CoreM Unit := do
  for elm in (<- persref.get) do
    println! elm.name
#eval printPersExts

use this to access the state of the extensions in the env


Last updated: May 02 2025 at 03:31 UTC