Fix a small space leak in DynamicProjects

Add a couple of strictness annotations to keep ExtensibleState from
building up thunks.
This commit is contained in:
Peter Jones
2015-11-18 13:37:55 -07:00
parent b1360f08d0
commit 08c88abfb2

View File

@@ -43,8 +43,8 @@ module XMonad.Actions.DynamicProjects
import Control.Applicative ((<|>)) import Control.Applicative ((<|>))
import Control.Monad (when, unless) import Control.Monad (when, unless)
import Data.List (sort, union, stripPrefix) import Data.List (sort, union, stripPrefix)
import Data.Map (Map) import Data.Map.Strict (Map)
import qualified Data.Map as Map import qualified Data.Map.Strict as Map
import Data.Maybe (fromMaybe, isNothing) import Data.Maybe (fromMaybe, isNothing)
import Data.Monoid ((<>)) import Data.Monoid ((<>))
import System.Directory (setCurrentDirectory, getHomeDirectory) import System.Directory (setCurrentDirectory, getHomeDirectory)
@@ -125,16 +125,16 @@ type ProjectTable = Map ProjectName Project
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- | Details about a workspace that represents a project. -- | Details about a workspace that represents a project.
data Project = Project data Project = Project
{ projectName :: ProjectName -- ^ Workspace name. { projectName :: !ProjectName -- ^ Workspace name.
, projectDirectory :: FilePath -- ^ Working directory. , projectDirectory :: !FilePath -- ^ Working directory.
, projectStartHook :: Maybe (X ()) -- ^ Optional start-up hook. , projectStartHook :: !(Maybe (X ())) -- ^ Optional start-up hook.
} deriving Typeable } deriving Typeable
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- | Internal project state. -- | Internal project state.
data ProjectState = ProjectState data ProjectState = ProjectState
{ projects :: ProjectTable { projects :: !ProjectTable
, previousProject :: Maybe WorkspaceId , previousProject :: !(Maybe WorkspaceId)
} deriving Typeable } deriving Typeable
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------