Isso pode ser limítrofe entre um SO, já que muita da questão é sobre a programação do haskell. No entanto, no final, é uma questão de configuração.
Antecedentes e pesquisa
Desde 0.12 Xmonad lança esse aviso (várias vezes) em xmonad.errors:
xmonad.hs:15:14: warning: [-Wdeprecations]
In the use of ‘defaultConfig’
(imported from XMonad, but defined in XMonad.Config):
Deprecated: "Use def (from Data.Default, and re-exported by XMonad and XMonad.Config) instead."
E funciona, é apenas um aviso. No entanto, gostaria de entender o que está causando o aviso (estou tentando entendê-lo e falhá-lo por várias horas já). Pela descrição de descontinuação, você poderia imaginar que XMonad.Config
não está usando a definição de Default
de Data.Default
, mas esse não é o caso. Observando o código de XMonad.Config
você vê no início import:
import XMonad.Core as XMonad hiding
(workspaces,manageHook,keys,logHook,startupHook,borderWidth,mouseBindings
,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse
,handleEventHook,clickJustFocuses,rootMask,clientMask)
import qualified XMonad.Core as XMonad
(workspaces,manageHook,keys,logHook,startupHook,borderWidth,mouseBindings
,layoutHook,modMask,terminal,normalBorderColor,focusedBorderColor,focusFollowsMouse
,handleEventHook,clickJustFocuses,rootMask,clientMask)
import XMonad.Layout
import XMonad.Operations
import XMonad.ManageHook
import qualified XMonad.StackSet as W
import Data.Bits ((.|.))
import Data.Default
import Data.Monoid
import qualified Data.Map as M
import System.Exit
import Graphics.X11.Xlib
import Graphics.X11.Xlib.Extras
E Data.Default
está definitivamente presente. Então defaultConfig
(ainda dentro de Xmonad.Config
) é definido como:
instance (a ~ Choose Tall (Choose (Mirror Tall) Full)) => Default (XConfig a) where
def = XConfig
{ XMonad.borderWidth = borderWidth
... ... ... ... ... ...
, XMonad.rootMask = rootMask
, XMonad.handleExtraArgs = \ xs theConf -> case xs of
[] -> return theConf
_ -> fail ("unrecognized flags:" ++ show xs)
}
-- | The default set of configuration values itself
{-# DEPRECATED defaultConfig "Use def (from Data.Default, and re-exported by XMonad and XMonad.Config) instead." #-}
defaultConfig :: XConfig (Choose Tall (Choose (Mirror Tall) Full))
defaultConfig = def
Então, defaultConfig
deve estar usando Data.Default
, e eu sou quem está fazendo algo errado, provavelmente.
Tentativas de solução
Minha configuração mínima ( xmonad.hs
) que está jogando o aviso é:
import XMonad
main = xmonad defaultConfig { terminal = "urxvt" }
(Minha configuração completa do xmonad é enorme, o acima é apenas uma configuração mínima que replica o aviso).
Eu tentei:
import Data.Default
import XMonad
main = xmonad defaultConfig { terminal = "urxvt" }
Mas o aviso permanece. Eu poderia usar main = xmonad XConfig {}
e, em seguida, enumerar todas as opções de configuração, mas isso seria copiar 90% de XMonad.Config
em meu próprio xmonad.hs
.
Pergunta
O que estou fazendo de errado? Como faço para forçar o uso de Data.Default
? Eu entendi o aviso de descontinuidade corretamente em primeiro lugar?