Haskellプログラミングに関する多くの質問があるので、これはおそらくSO間の境界線です。しかし、最終的にこれは構成の問題です。
背景と研究
0.12以降、Xmonadは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."
動作します。ただ警告です。しかし、警告の原因が何であるかを知りたいです。 (理解XMonad.Config
しようとしましたが、数時間失敗しました)コードを見るDefault
Data.Default
XMonad.Config
最初にインポートが表示されます。
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
そしてData.Default
それは確かに存在します。その後defaultConfig
、(まだXmonad.Config
)は次のように定義されます。
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
それで、defaultConfig
それを使うべきで、Data.Default
おそらく私が間違ったことをしている人でしょう。
試してみるソリューション
xmonad.hs
警告を発行する必要がある最小構成()は次のとおりです。
import XMonad
main = xmonad defaultConfig { terminal = "urxvt" }
(私の完全なxmonad設定はかなり大きいです。上記は警告を複製するための最小限の設定です。)
私は試した:
import Data.Default
import XMonad
main = xmonad defaultConfig { terminal = "urxvt" }
しかし、警告は残ります。各設定オプションを使用して列挙できますが、これにより、私の設定オプションのmain = xmonad XConfig {}
90%がコピーされます。XMonad.Config
xmonad.hs
質問
私は何が間違っていましたか?強制的に使用するにはどうすればよいですかData.Default
?最初にサポート停止の警告を正しく理解しましたか?
ベストアンサー1
インポートする必要はありません。import Data.Default
これはXMonad自体から取得されます。
変更は1つだけ必要です。
import XMonad
main = xmonad defaultConfig { terminal = "urxvt" }
到着
import XMonad
main = xmonad def { terminal = "urxvt" }