on master help sign in
Graphics.Vty.Config: expose widthTableFilename, vtyDataDirectory, and terminalWidthTablePath
commit154800b4a8c4a9c8019ce9b8af437ab346b51e31 authorJonathan Daugherty <cygnus@foobox.com> dateThu 27 Feb 2020, 16:40 (7 years ago) parente0d05e3
1 file changed+21−1
src/Graphics/Vty/Config.hs+21−1
src/Graphics/Vty/Config.hs+21−1
@@ -66,6 +66,10 @@ module Graphics.Vty.Config
6666 , parseConfigFile
6767 , defaultConfig
6868 , getTtyEraseChar
69+
70+ , widthTableFilename
71+ , vtyDataDirectory
72+ , terminalWidthTablePath
6973 )
7074where
7175
@@ -91,6 +95,7 @@ import GHC.Generics
9195
9296import System.Directory (getAppUserDataDirectory)
9397import System.Environment (lookupEnv)
98+import System.FilePath ((</>))
9499import System.Posix.IO (stdInput, stdOutput)
95100import System.Posix.Types (Fd(..))
96101import Foreign.C.Types (CInt(..), CChar(..))
@@ -175,15 +180,30 @@ instance Monoid Config where
175180 mappend = (<>)
176181#endif
177182
183+vtyDataDirectory :: IO FilePath
184+vtyDataDirectory = getAppUserDataDirectory "vty"
185+
178186-- | Load a configuration from @'getAppUserDataDirectory'/config@ and
179187-- @$VTY_CONFIG_FILE@.
180188userConfig :: IO Config
181189userConfig = do
182− configFile <- (mappend <$> getAppUserDataDirectory "vty" <*> pure "/config") >>= parseConfigFile
190+ configFile <- (mappend <$> vtyDataDirectory <*> pure "/config") >>= parseConfigFile
183191 overrideConfig <- maybe (return defaultConfig) parseConfigFile =<< lookupEnv "VTY_CONFIG_FILE"
184192 let base = configFile <> overrideConfig
185193 mappend base <$> overrideEnvConfig
186194
195+widthTableFilename :: String -> String
196+widthTableFilename term = "width_table_" <> term <> ".dat"
197+
198+terminalWidthTablePath :: IO (Maybe FilePath)
199+terminalWidthTablePath = do
200+ dataDir <- vtyDataDirectory
201+ result <- lookupEnv "TERM"
202+ case result of
203+ Nothing -> return Nothing
204+ Just term -> do
205+ return $ Just $ dataDir </> widthTableFilename term
206+
187207overrideEnvConfig :: IO Config
188208overrideEnvConfig = do
189209 d <- lookupEnv "VTY_DEBUG_LOG"