id = "ghci" name = "GHCi" homepage = "https://www.haskell.org/ghc/" description = "GHCi is GHC's interactive environment that includes an interactive debugger." # GHCi is GHC's REPL and carries no mark of its own; the Haskell logo is what # haskell.org/ghc shows for it. icon = "theSVG:haskell" executables = ["ghci"] [dotfiles] # GHC user's guide, "The .ghci and .haskeline files" # (docs/users_guide/ghci.rst, ghci-dot-files): GHCi "reads and executes # commands from the following files, in this order, if they exist: # 1. {ghcappdata}/ghci.conf, where depends on your system, but is # usually something like $HOME/.ghc or $XDG_CONFIG_HOME/ghc on Unix or # C:\Users\\AppData\Roaming\ghc on Windows. 2. ./.ghci". # # ghc/GHCi/UI.hs adds the home-directory file the guide's list leaves implicit: # `appDataCfg = getAppDataFile XdgConfig "ghci.conf"` beside # `homeCfg = getEnv "HOME" >>= \home -> home ".ghci"`, and both are sourced # at startup. So three user-level files, and the XDG one is [configHome]: # GHC's XDG config home is $XDG_CONFIG_HOME (else ~/.config) on Unix and macOS # alike and %APPDATA% on Windows, which is exactly the AppData\Roaming\ghc # spelling the guide names. ./.ghci is per-project, not user-level. # # ~/.haskeline is the fourth: the same chapter's ".haskeline file" section says # GHCi "uses Haskeline under the hood" for line editing, and Haskeline's own # System/Console/Haskeline/Prefs.hs says its preferences "are read by default # from ~/.haskeline". paths = [ "~/.ghci", "~/.ghc/ghci.conf", "[configHome]/ghc/ghci.conf", "~/.haskeline", ] # The neighbouring ~/.ghc/ghci_history is the line-editing history, not config, # and no path above names it, so there is nothing to carve out. exclude = [] # These files hold `:set` flags, `:def` macros and Haskeline preferences. # GHCi stores no credential under the home directory. secret = [] # Every one of these is re-read from disk each time ghci starts. side_effect = false # No machine_lines: :set flags, prompt strings and editMode are preferences a # user wants on every machine. A .ghci can carry `:set -i` include paths, # but those are relative to the project GHCi was started in rather than to this # machine, so a prefix rule on `:set` would strand ordinary options.